2

この人の投稿で概説されているように、PHP を介して IP をブロックするのは非常に簡単です。

ただし、IIS を使用してサイト全体でこれを行うにはどうすればよいですか?

ここに私の(大きな)警告があります:

  1. php.ini を変更するアクセス権がありません。そのため、auto_prepend 機能を使用できません。
  2. IIS を搭載した Windows を使用しているため、.htaccess を使用できません。
  3. すべてのスクリプトで呼び出される PHP の「フッター」はありません。実際、多くのページが静的 HTML です。

IIS を使用して IP をホワイトリストに登録する方法はありますか?

幸いなことに、ホワイトリストに登録する IP の静的リストがあるので、簡単に変更する必要はありません。

4

2 に答える 2

4

IIS で IP アドレスをホワイトリストに登録できます。これにより、必要な結果が得られるはずです。

  • IIS 6.0 で、Web サイトを右クリックし、プロパティを選択します。
  • [ディレクトリ セキュリティ] タブに移動します。
  • [IP アドレスとドメイン名の制限] の [編集] をクリックします。
  • [アクセスを拒否] ラジオ ボタンをクリックします。
  • 許可する IP アドレスを入力します。
于 2009-06-25T17:22:16.673 に答える
2

これを行うには、IIRFのような URLリライターを使用できます。許可されていない IP からのリクエストに対して 404 などを返すルールを挿入します。これは、PHP、Java、ASP.NET、RoR、静的 html、画像など、あらゆる Web アプリ プラットフォームで動作します。

readme には、次のような例が示されています。

RewriteCond %{REMOTE_ADDR}   ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule  ^/(?!redirected.htm)(.*)$      /redirected.htm

そしてそれは言います:

上記の条件は、サーバー変数「REMOTE_ADDR」が 127.0.0.1 以外の IP アドレスに評価される場合に true と評価されます。?! ゼロ幅の負の先読みであり、正規表現の最後の (.*) は、その変数に時々現れるゴミをキャッチすることです。条件に続くルールでは、「redirected.htm」以外の URL については、「redirected.htm」にマップします。これにより、際限のない書き直しが防止されます。([L] 修飾子フラグを使用して無限の書き換えを防ぐこともできます)。

この RewriteCond+RewriteRule は、外部からの要求を IIS サーバーにリダイレクトします。ホワイトリストに登録された特定の IP のセットに対して同様のことを行うことができます。

IIRF は C で記述された ISAPI フィルターであり、mod_rewrite と哲学が似ています。IIS5、6、または 7 で動作します。設定するには管理者アクセスが必要です。「プログラムする」必要はありませんが、.htaccess と同様の構文を持つ ini ファイルがあります (特に mod_rewrite ルール用)。

IIRF は無料でオープンソースです。

于 2009-06-25T16:34:57.947 に答える