HttpServer は制御できますが、そこにある ApplicationServer や Java アプリケーションは制御できませんが、これらのアプリケーションの特定のページへの直接アクセスをブロックする必要があります。正確には、適切なサーブレットに対して直接 GET/POST HTTP 要求を発行するフォームへのアクセスをユーザーに自動化してほしくありません。
そこで、 の値に基づいてユーザーをブロックすることにしましたHTTP_REFERER
。結局のところ、ユーザーがサイト内を移動している場合、適切なHTTP_REFERER
. まあ、それは私が思ったことでした。
.htaccess ファイルに次のような書き換えルールを実装しました。
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteRule (servlet1|servlet2)/.+\?.+ - [F]
サイトをナビゲートしていないが、クエリ文字列を使用して「servlet1」または「servlet2」サーブレットに直接 GET 要求を発行するユーザーへのアクセスを禁止することを期待していました。しかし、正規表現(servlet1|servlet2)/.+\?.+
がまったく機能しなかったため、私の期待は突然終わりました。
その表現を に変更したときは本当にがっかりし(servlet1|servlet2)/.+
ました。サイトをナビゲートするかどうかに関係なく、ユーザーがブロックされるほどうまく機能しました。
それで、私の質問は次のとおりです。アプリケーションを変更するアクセス/権限/時間がない場合、特定のページへの直接アクセスを持つ「ロボット」を許可しないということをどのように達成できますか?