現在、Webアプリケーションへの不正アクセス対策として、URLに特定の文字列が含まれるアクセスをブロックする方法を検討しています。具体的には、URLに「:mal」という文字列が含まれる場合にアクセスをブロックしたいと考えています。
様々な方法を調べて試してみたのですが、うまく動作させることができていません。
試したこと
.htaccess を使用したブロック:
RewriteEngine On
RewriteCond %{REQUEST_URI} :mal
RewriteRule ^(.*)$ - [F,L]
この設定を.htaccessファイルに記述し、Webサーバーのルートディレクトリに配置しました。しかし、期待通りに「:mal」を含むURLへのアクセスがブロックされませんでした。アクセスログを確認すると、依然として「:mal」を含むURLへのアクセスが記録されています。
Nginxの設定変更
現在使用しているWebサーバーはNginxです。そこで、Nginxの設定ファイル(nginx.conf)に以下のような設定を追加してみました。
server { ... if ($request_uri ~ ":mal") { return 403; } ... }
こちらも同様に、設定を反映させた後も「:mal」を含むURLへのアクセスがブロックされませんでした。
PHPでWebアプリケーションを開発しているため、アプリケーションレベルでURLを検査し、:malが含まれる場合はアクセスを拒否する処理を追加することも検討しました。しかし、この方法では、既にWebサーバーに負荷がかかってしまっているため、なるべくサーバー側で処理したいと考えています。
上記の.htaccessやNginxの設定で、なぜ「:mal」を含むURLのアクセスがブロックされないのでしょうか?設定ファイルに誤りがあるのでしょうか?
.htaccessやNginx以外に、URLに特定の文字列が含まれるアクセスをブロックする効果的な方法はありますか?
Webアプリケーションファイアウォール(WAF)の導入も検討していますが、他に何か良い対策があれば教えてください。
ご教授いただけると幸いです。よろしくお願いいたします。

あなたの回答
tips
プレビュー