Câu hỏi này không phải là về bảo vệ chống lại các cuộc tấn công SQL injection. Câu hỏi đó đã được trả lời nhiều lần trên StackOverflow và tôi đã thực hiện các kỹ thuật. Đây là về việc dừng số lần thử.18.000 nỗ lực tiêm MySQL mỗi ngày: Ngừng các nỗ lực
Gần đây, trang web của tôi đã bị tấn công với số lượng lớn các cuộc tấn công tiêm. Ngay bây giờ, tôi bẫy chúng và trả lại một trang tĩnh.
Đây là những gì URL của tôi trông giống như:
/products/product.php?id=1
Đây là những gì một cuộc tấn công trông giống như:
/products/product.php?id=-3000%27%20IN%20BOOLEAN%20MODE%29%20UNION%20ALL%20SELECT%2035%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C%27qopjq%27%7C%7C%27ijiJvkyBhO%27%7C%7C%27qhwnq%27%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35--%20
Tôi biết chắc chắn rằng đây không phải chỉ là một liên kết xấu hoặc chất béo ngón tay đánh máy vì vậy tôi không muốn gửi chúng đến trang tổng quan. Tôi cũng không muốn sử dụng bất kỳ tài nguyên nào trên trang web của mình cung cấp các trang tĩnh.
Tôi đang xem xét việc để trang chết với die()
. Có điều gì sai trái với cách tiếp cận này không? Hoặc là có một mã trả về HTML mà tôi có thể thiết lập với PHP mà sẽ thích hợp hơn?
Chỉnh sửa:
Dựa trên một vài nhận xét bên dưới, tôi đã tìm cách trả về 'không tìm thấy trang'. Stack Overflow này answer bởi icktoofay gợi ý sử dụng 404 và sau đó là die(); - bot nghĩ rằng không có trang và thậm chí có thể biến mất và không còn tài nguyên nào được sử dụng để hiển thị thông báo không tìm thấy trang.
header("HTTP/1.0 404 Not Found");
die();
chỉ sử dụng báo cáo đã chuẩn bị – bksi
Trả lại lỗi 403 có thể hơi thích hợp. – zebediah49
Bạn có cân bằng tải F5 trước máy chủ không? – Colyn1337