Qは2つの部分で構成されます。jeroenとanubhavaの両方のソリューションは、パートIで機能し、/ includesへのアクセスを拒否します。anubhavaはパートIIでも機能します。私はDOCROOT/.htaccess
とにかく使用するので後者を好みます、そしてこれはそのようなすべての制御を1つのファイルに保持します。
しかし、私が話したかったのは、「アクセスを拒否する」という概念ですsubmit.php
。あなたが使いたくないならsubmit.php
、なぜそれをDOCROOTに持っているのですか?ここでの答えは、いくつかのフォームでアクションターゲットとして使用し、フォームが送信されたときにのみ発生させ、スパムボットなどから直接は発生させないようにすることです。
これが当てはまる場合、フォームが失敗する原因となるため、anubhavaのパートIIを使用できません。ここでできることは、(i).htaccess
リファラーが自分のインデックスページであったことを確認するチェックです。
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
(ii)PHPのindex.phpフォームジェネレーター内に、タイムスタンプと検証のためのいくつかの非表示フィールドを含めます。検証は、たとえば、タイムスタンプのMD5の最初の10文字と内部秘密です。送信の処理時に、(i)タイムスタンプと検証が一致することを検証し、(ii)タイムスタンプが現在の時刻からたとえば15分以内であることを検証できます。
スパマーが有効なタイムスタンプと検証のペアを取得できる唯一の実用的な方法はフォームを解析することになるため、これによりスパミングを防止できますが、このスクレイプの有効期間は15分だけです。