Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Tường lửa ứng dụng Web (Mini WAF)

    Bối cảnh

    Một Web Application Firewall (WAF) đơn giản chặn các truy vấn HTTP nếu nội dung của chúng chứa bất kỳ mẫu (pattern) nào nằm trong danh sách đen (blacklist), so khớp dưới dạng chuỗi con (substring), không phân biệt hoa/thường.

    Cho danh sách nnn mẫu cấm và mmm truy vấn cần kiểm tra, với mỗi truy vấn hãy in ra:

    • BLOCK nếu truy vấn chứa ít nhất một mẫu cấm (không phân biệt hoa/thường) ở bất kỳ vị trí nào trong chuỗi.
    • ALLOW nếu truy vấn không chứa mẫu cấm nào.

    Ví dụ: Với danh sách cấm gồm select, union, -- và truy vấn 1 UNION SELECT password, kết quả là BLOCK (chứa cả union và select, không phân biệt hoa/thường).

    • Định dạng đầu vào:

      Dòng đầu tiên chứa số nguyên nnn (0≤n≤1000 \le n \le 1000≤n≤100) — số mẫu cấm. nnn dòng tiếp theo, mỗi dòng một mẫu cấm (có thể chứa khoảng trắng). Dòng tiếp theo chứa số nguyên mmm (1≤m≤1001 \le m \le 1001≤m≤100) — số truy vấn. mmm dòng tiếp theo, mỗi dòng một truy vấn cần kiểm tra.

    • Định dạng đầu ra:

      In ra mmm dòng, mỗi dòng là BLOCK hoặc ALLOW tương ứng với từng truy vấn theo đúng thứ tự đầu vào.

    Ví dụ:

    Đầu vào:

    3
    select
    union
    --
    4
    hello world
    SELECT * FROM users
    1 UNION SELECT password
    safe query

    Đầu ra:

    ALLOW
    BLOCK
    BLOCK
    ALLOW
    

    Đầu vào:

    0
    2
    anything goes
    really anything

    Đầu ra:

    ALLOW
    ALLOW
    

    Đang tải editor...