目次
キーテイクアウト
mod_rewriteメソッド:
ここでの大きな問題はスケーラビリティです。資産にアクセスできる必要がある1000のドメインがある場合はどうなりますか?ドメインのリストが頻繁に変更された場合はどうなりますか?
それらのiframesはどうですか?
アセットアクセス制限でユーザーエージェントブロッキングを使用するにはどうすればよいですか?
ホームページ バックエンド開発 PHPチュートリアル 資産アクセス制限方法 - 不要な訪問者をブロックします

資産アクセス制限方法 - 不要な訪問者をブロックします

Feb 20, 2025 am 10:23 AM

Asset Access Restriction Methods - Block Unwanted Visitors

資産アクセス制限方法 - 不要な訪問者をブロックします

キーテイクアウト

  • 資産へのアクセス制御を実装することは、セキュリティにとって重要です。ホワイトリストは推奨されるアプローチであり、ゲートキーパーは信頼できるエンティティのみが資産にアクセスできるようにします。このゲートキーパーは、HTTPサーバーまたはアプリケーションコードに配置でき、HTTP_HOSTを確認するツールを提供できます。
  • HTTPサーバーは、リクエストごとにアプリケーションコードを起動する必要なく、アクセス制御を効率的に処理できます。サーバーに応じて、mod_rewriteやApacheの許可/拒否などのさまざまな方法、またはnginxのhttpreferermoduleを使用できます。ただし、このアプローチのスケーラビリティは、変更を管理または頻繁に変更するドメインが多い場合は課題になります。
  • アプリケーションコードレベルでのアクセス制御により、柔軟性が向上します。この方法では、リファラーがIFRAMEステータスに関する情報を提供しないIFRAMEの状況も処理できます。ただし、HTTPサーバーとアプリケーションコードの両方のメソッドは完全にはないため、OAUTHなどのトークンベースのゲートキーパーがセキュリティを強化するために推奨されます。
  • 素晴らしいWebアプリやWebサイトを構築するとき、Webアプリ/Webサイトの一部を独自に埋め込むことができるようにしたい場合があります。それは、「いいね」ボタンを保持しているiframeである可能性があります。彼らが再利用したいシンプルな画像、または私たちのアプリ全体がiframeに埋め込まれています。
しかし、誰がアクセスできるのか、誰が帯域幅を使い果たし、サービスを照会することを許可されているのかをどのように制御しますか?

問題を、アクセスを制御する

アクセス制限:いくつかを許可し、すべて

をブロックします アクセス制御について話すとき、セキュリティのドメインを入力します。そして、セキュリティを話すとき、ホワイトリストは問題に取り組むために取られたアプローチでなければなりません。誰があなたの資産にアクセスすることが許可されているかを制御する方が簡単です。インターネットのすべてのブギーモンスターを知ることは単に不可能です。 資産を保護するために、

、私たちはゲートキーパーを雇って信頼できるものだけを雇います。雇われたら、彼にコントロールするホワイトリストへのアクセスを与え、彼にすべての重い持ち上げをさせます。問題が解決しました。しかし、ゲートキーパーはどのように持ち上げる必要がありますか?

持ち上げ戦術

ゲートキーパーがどれだけ安全であるか、クライアントが求めたものに応じて、さまざまな戦術を使用できます。

使用される一般的なアプローチは、参照ヘッダーをチェックすることです。その方法には3つの大きな欠点があります:

  1. リンクを使用して人々があなたのウェブサイトにアクセスするときにも参照者は設定されます
  2. 参照者はクライアントによってサーバーに送信され、変更される可能性があります
  3. 参照者はまったく設定されていない場合があります
ただし、画像、JS、CSSなどの静的資産の場合、これらの欠点は問題ではありません。あなたの資産は、ユーザーが当社のウェブサイトに直接アクセスしている場合(または信頼できるサイトから)ロードする必要があります。一般的な考え方は、他の人をブロックすることです。したがって、参照者は常にホワイトリストに載っています。あなたが自分自身を信頼しない限り - しかし、あなたはより大きな問題を抱えています。

bro、あなたも持ち上げますか?

使用されるセットアップに応じて、クエリは一連の

ゲートを通過しました。簡単なセットアップは次のとおりです。クライアント - > httpサーバー - >アプリケーションコード

では、ゲートキーパーはどこに座っていますか?クライアントは、彼が信頼できない人間の作品であるため、事実上のアクセスコントロールを求めません。一方、HTTPサーバーとアプリケーションコードは便利なオプションです。どちらも、HTTP_HOSTをチェックするための強力なツールを提供します

httpサーバーは、持ち上げる方法を知っています

HTTPサーバーにアクセス制御を処理することの強度は速度です。リクエストごとにアプリケーションコードを起動する必要はありません。これにより、アプリケーションスタック/スレッド(MOD_PHPなど)をメモリにロードする必要がないため、パフォーマンスを大幅に向上させる可能性があります。

HTTPサーバーに応じて、さまざまなソリューションが利用可能です

apache

Apacheでは、2つの異なる方法があります。 mod_rewriteを使用するか、許可/拒否します。

mod_rewriteメソッド:

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]
ログイン後にコピー
ログイン後にコピー
許容/拒否法:

すべてのホストがそれらの設定をサポートしているわけではありません。

nginx
#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>
ログイン後にコピー
ログイン後にコピー
Nginxのhttpreferermoduleは本当にクールなvalid_referersを提供します。ヘッダーを送信せずに接続します…

httpサーバーは
とは思わない

ここでの大きな問題はスケーラビリティです。資産にアクセスできる必要がある1000のドメインがある場合はどうなりますか?ドメインのリストが頻繁に変更された場合はどうなりますか?

すべての編集ごとに、構成ファイルに飛び込む必要があります。手動で変更すればするほど、間違いが増える可能性があります。

アプリケーションコードは何をすべきかを知っています

アプリケーションコードレベルにアクセス制御を使用すると、柔軟性がはるかに高くなります。すぐに彼のゲートキーパーを稼働させることができます:
location / {
  valid_referers trusted.tld trusted.domain.tld;
  if ($invalid_referer) {
    return   444;
  }
}
ログイン後にコピー
ログイン後にコピー

それらのiframesはどうですか?

前述のように、参照者に依存することは必ずしも良い考えではありません。それは私たちの信頼できない人間からのデータだけでなく、私たちがIFRAMEにいるかどうかについても手がかりを与えません。単に知る方法はありません。

しかし、ゲートキーパーを助けるためにヒットマンを雇うことができました。私たちのヒットマンは、疑わしいように見える人間に派遣されます(例えば、信頼されていない参照者がいる人)。ヒットマンは、JSを武器として使用します:

# 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]
ログイン後にコピー
ログイン後にコピー

悲しいことに、信頼できないドメインから到着した人は、その信頼できないドメインのiframeを使用して私たちにアクセスする他の誰かと同じ参照を持っています。ただし、アセットでは、参照者がドメインに設定されます(IFRAMEの状況であっても)。ここにヒットマンを送信するのはやり過ぎです。アクセスを拒否するだけで十分です - または、ランダムな子猫の画像を送信することができます。 そのため、IFRAMEにいるかどうかをヒットマンチェックがあるのです。もしそうなら、私たちは彼に私たちのターゲットを殺させます:

私たちが知っておく必要がある唯一のことは、ゲートキーパーにヒットマンをクライアントに送信したペイロードに追加させることです。簡単!
#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ブロッキングが含まれます。地理的位置に基づいてアクセスを制限するジオブロッキング。特定のブラウザやデバイスからのアクセスを防ぐユーザーエージェントブロッキング。その他の方法には、参照ウェブサイトに基づいてアクセスを制限するHTTPリファラーブロッキングと、ユーザーがアクセスを得るためにパスワードを入力する必要があるパスワード保護が含まれます。

IPブロッキングは、特定のIPアドレスがデジタル資産にアクセスするのを防ぐために使用される方法です。これは、サーバーの構成ファイルの「ブラックリスト」にIPアドレスを追加することによって行われます。これらのIPアドレスからのリクエストは拒否され、資産へのアクセスを効果的にブロックします。地理的位置に基づいてデジタル資産へのアクセスを制限します。これは、多くの場合、地域のライセンス契約に準拠したり、サイバー攻撃で知られている地域からのアクセスを防ぐために使用されます。ジオブロッキングは、IPアドレスに基づいてユーザーの場所を決定することで機能します。

アセットアクセス制限でユーザーエージェントブロッキングを使用するにはどうすればよいですか?

ユーザーエージェントブロッキングは、特定のブラウザまたはデバイスがデジタル資産にアクセスするのを防ぐために使用される方法です。これは、サーバーにリクエストを行うときにブラウザまたはデバイスによって送信されるユーザーエージェント文字列を識別することによって行われます。ユーザーエージェントの文字列がサーバーの「ブラックリスト」の1つと一致する場合、リクエストは拒否されます。参照Webサイトに基づいてアクセスを制限するために使用される方法。これは、リクエストが生じたWebサイトのURLを含むHTTPリファラーヘッダーをチェックすることによって行われます。リファラーがサーバーの「ブラックリスト」にある場合、リクエストは拒否されます。ユーザーにパスワードの入力を要求することにより、デジタル資産。これは、多くの場合、民間または敏感な資産に使用されます。サーバーは、資産にアクセスしようとするときにユーザーにパスワードを求めます。正しいパスワードを入力する人のみがアクセスが許可されます。 🎜>はい、複数のアセットアクセス制限方法を一緒に使用して、より高いレベルのセキュリティを提供できます。たとえば、IPブロッキングを使用して特定のIPアドレスからのアクセスを防ぎ、パスワード保護を使用して、認定ユーザーのみへのアクセスをさらに制限します。 >

ウェブサイトにアセットアクセス制限メソッドの実装には、通常、サーバーの構成ファイルの変更が含まれます。正確なプロセスは、使用しているサーバーソフトウェアと実装する特定の制限方法によって依存します。

アセットアクセス制限方法を使用する欠点はありますか?高レベルのセキュリティを提供することができ、合法的なユーザーをブロックする可能性もあります。たとえば、IPブロッキングは、VPNまたはプロキシを使用しているユーザーをブロックする可能性があり、Geoブロッキングは海外に旅行しているユーザーをブロックすることができます。したがって、これらの方法を実装する前に、ユーザーへの潜在的な影響を慎重に検討することが重要です。

資産アクセス制限方法の代替品は何ですか?ネットワーク(CDN)資産を配布したり、サーバーを保護してファイアウォールを使用したり、さまざまなセキュリティ機能を提供するセキュリティプラグインまたはサービスを使用したりします。これらの代替案は、資産アクセス制限方法の潜在的な欠点なしで、高レベルのセキュリティを提供できます。

以上が資産アクセス制限方法 - 不要な訪問者をブロックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles