この質問は、SQL インジェクション攻撃からの保護に関するものではありません。その質問は StackOverflow で何度も回答されており、私はその手法を実装しました。これは、試行を停止することです。
最近、私のサイトは膨大な数のインジェクション攻撃を受けました。現在、それらをトラップして静的ページを返しています。
私のURLは次のようになります。
/products/product.php?id=1
これは、攻撃がどのように見えるかです:
/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
これが単なる悪いリンクや太い指のタイピングではないことは確かなので、概要ページに送りたくありません。また、サイトで静的ページを配信するリソースを使用したくありません。
でページを死なせることを検討していますdie()
。このアプローチに問題はありますか?または、より適切な PHP で設定できる HTML リターン コードはありますか?
編集:
以下のいくつかのコメントに基づいて、「ページが見つかりません」を返す方法を調べました。icktoofay によるこのスタック オーバーフローの回答では、404 を使用してから die(); を使用することを提案しています。- ボットは、ページが存在しないと考えており、ページが見つからないというメッセージを表示するために使用されるリソースがなくなる可能性さえあります。
header("HTTP/1.0 404 Not Found");
die();