問題を、アクセスを制御する
アクセス制限:いくつかを許可し、すべて
をブロックします アクセス制御について話すとき、セキュリティのドメインを入力します。そして、セキュリティを話すとき、ホワイトリストは問題に取り組むために取られたアプローチでなければなりません。誰があなたの資産にアクセスすることが許可されているかを制御する方が簡単です。インターネットのすべてのブギーモンスターを知ることは単に不可能です。 資産を保護するために、
、私たちはゲートキーパーを雇って信頼できるものだけを雇います。雇われたら、彼にコントロールするホワイトリストへのアクセスを与え、彼にすべての重い持ち上げをさせます。問題が解決しました。しかし、ゲートキーパーはどのように持ち上げる必要がありますか?持ち上げ戦術
使用される一般的なアプローチは、参照ヘッダーをチェックすることです。その方法には3つの大きな欠点があります:
ゲートを通過しました。簡単なセットアップは次のとおりです。クライアント - > httpサーバー - >アプリケーションコード
httpサーバーは、持ち上げる方法を知っています apache Apacheでは、2つの異なる方法があります。 mod_rewriteを使用するか、許可/拒否します。
mod_rewriteは、ほとんどのホスティングプロバイダーによってサポートされています
アプリケーションコードは何をすべきかを知っています 前述のように、参照者に依存することは必ずしも良い考えではありません。それは私たちの信頼できない人間からのデータだけでなく、私たちがIFRAMEにいるかどうかについても手がかりを与えません。単に知る方法はありません。 しかし、ゲートキーパーを助けるためにヒットマンを雇うことができました。私たちのヒットマンは、疑わしいように見える人間に派遣されます(例えば、信頼されていない参照者がいる人)。ヒットマンは、JSを武器として使用します: 悲しいことに、信頼できないドメインから到着した人は、その信頼できないドメインのiframeを使用して私たちにアクセスする他の誰かと同じ参照を持っています。ただし、アセットでは、参照者がドメインに設定されます(IFRAMEの状況であっても)。ここにヒットマンを送信するのはやり過ぎです。アクセスを拒否するだけで十分です - または、ランダムな子猫の画像を送信することができます。
そのため、IFRAMEにいるかどうかをヒットマンチェックがあるのです。もしそうなら、私たちは彼に私たちのターゲットを殺させます:
ユーザーエージェントブロッキングは、特定のブラウザまたはデバイスがデジタル資産にアクセスするのを防ぐために使用される方法です。これは、サーバーにリクエストを行うときにブラウザまたはデバイスによって送信されるユーザーエージェント文字列を識別することによって行われます。ユーザーエージェントの文字列がサーバーの「ブラックリスト」の1つと一致する場合、リクエストは拒否されます。参照Webサイトに基づいてアクセスを制限するために使用される方法。これは、リクエストが生じたWebサイトのURLを含むHTTPリファラーヘッダーをチェックすることによって行われます。リファラーがサーバーの「ブラックリスト」にある場合、リクエストは拒否されます。ユーザーにパスワードの入力を要求することにより、デジタル資産。これは、多くの場合、民間または敏感な資産に使用されます。サーバーは、資産にアクセスしようとするときにユーザーにパスワードを求めます。正しいパスワードを入力する人のみがアクセスが許可されます。 🎜>はい、複数のアセットアクセス制限方法を一緒に使用して、より高いレベルのセキュリティを提供できます。たとえば、IPブロッキングを使用して特定のIPアドレスからのアクセスを防ぎ、パスワード保護を使用して、認定ユーザーのみへのアクセスをさらに制限します。 >
ただし、画像、JS、CSSなどの静的資産の場合、これらの欠点は問題ではありません。あなたの資産は、ユーザーが当社のウェブサイトに直接アクセスしている場合(または信頼できるサイトから)ロードする必要があります。一般的な考え方は、他の人をブロックすることです。したがって、参照者は常にホワイトリストに載っています。あなたが自分自身を信頼しない限り - しかし、あなたはより大きな問題を抱えています。
使用されるセットアップに応じて、クエリは一連の HTTPサーバーにアクセス制御を処理することの強度は速度です。リクエストごとにアプリケーションコードを起動する必要はありません。これにより、アプリケーションスタック/スレッド(MOD_PHPなど)をメモリにロードする必要がないため、パフォーマンスを大幅に向上させる可能性があります。
HTTPサーバーに応じて、さまざまなソリューションが利用可能です
mod_rewriteメソッド:
# Turn mod_rewrite on
RewriteEngine On
# if it is not trusted.domain.tld block it
RewriteCond %{HTTP_REFERER} !^trusted\.domain\.tld$ [NC]
RewriteCond %{HTTP_REFERER} !^trusted\.tld$ [NC]
RewriteRule ^ - [F]
#specify the files to guard, block all the assets
<files "*.*">
#block everyone
Deny from all
#allow trusted ones
Allow from trusted.tld trusted.domain.tld
</files>
とは思わない
ここでの大きな問題はスケーラビリティです。資産にアクセスできる必要がある1000のドメインがある場合はどうなりますか?ドメインのリストが頻繁に変更された場合はどうなりますか?
アプリケーションコードレベルにアクセス制御を使用すると、柔軟性がはるかに高くなります。すぐに彼のゲートキーパーを稼働させることができます:
location / {
valid_referers trusted.tld trusted.domain.tld;
if ($invalid_referer) {
return 444;
}
}
それらのiframesはどうですか?
# Turn mod_rewrite on
RewriteEngine On
# if it is not trusted.domain.tld block it
RewriteCond %{HTTP_REFERER} !^trusted\.domain\.tld$ [NC]
RewriteCond %{HTTP_REFERER} !^trusted\.tld$ [NC]
RewriteRule ^ - [F]
#specify the files to guard, block all the assets
<files "*.*">
#block everyone
Deny from all
#allow trusted ones
Allow from trusted.tld trusted.domain.tld
</files>
location / {
valid_referers trusted.tld trusted.domain.tld;
if ($invalid_referer) {
return 444;
}
}
ここに提供されるソリューションは、ほとんどのブギーモンスターからあなたを守ります。しかし、両方の解決策はばかな証拠ではありません。 1つ目はクライアントからのデータを使用し、2つ目はクライアントが実行するJavaScriptです。
安全な方法は、トークンベースのゲートキーパーを使用することです。 Oauthはおそらくあなたがここで仕事に望んでいる人ですが、それはこの記事の範囲外です。
アセットアクセス制限方法に関するよくある質問(FAQ)IPブロッキングは、特定のIPアドレスがデジタル資産にアクセスするのを防ぐために使用される方法です。これは、サーバーの構成ファイルの「ブラックリスト」にIPアドレスを追加することによって行われます。これらのIPアドレスからのリクエストは拒否され、資産へのアクセスを効果的にブロックします。地理的位置に基づいてデジタル資産へのアクセスを制限します。これは、多くの場合、地域のライセンス契約に準拠したり、サイバー攻撃で知られている地域からのアクセスを防ぐために使用されます。ジオブロッキングは、IPアドレスに基づいてユーザーの場所を決定することで機能します。
アセットアクセス制限でユーザーエージェントブロッキングを使用するにはどうすればよいですか?
以上が資産アクセス制限方法 - 不要な訪問者をブロックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。