1. 原則
ホットリンク防止を実装するには、まずホットリンク防止の実装原理を理解する必要があります。HTTP プロトコルには次のようなものがあります。 Referer と呼ばれるヘッダー フィールド。URL 形式を使用して、現在の Web ページまたはファイルへのリンク先を示します。言い換えれば、Web サイトはリファラーを通じて、ターゲット Web ページが訪問するソース Web ページを検出でき、それがリソース ファイルの場合は、それを表示する Web ページ アドレスを追跡できます。リファラーがソースを追跡すると、現時点では、ソースがこのサイトではないことが検出されると、ブロックされるか、指定されたページに戻されるため、処理が容易になります。 Web サイトをホットリンクから保護したい場合は、状況に応じて異なる方法で対処する必要があります。
Web サイトのサーバーが Apache を使用している場合、Apache に付属する URL 書き換え機能を使用すると、参照情報が他の Web サイトからのものである場合は、指定された画像にリダイレクトするか、または参照を確認することが簡単にできます。ウェブページ上で。
サーバーが IIS を使用している場合、ホットリンク対策機能を実装するにはサードパーティのプラグインを使用する必要があります。現在一般的に使用されている製品は ISAPI_Rewrite と呼ばれるもので、Apache と同様のホットリンク対策機能を実装できます。さらに、フォーラムはホットリンクを防ぐために「ログイン検証」方法を使用することもできます。
2. ホットリンク対策の実装
次に、アプリケーションとサイト ファイルを保護するために、ASP.NET Core にホットリンク対策テクノロジを実装しましょう。これには、ASP.NET Core のミドルウェア テクノロジを使用して、すべての受信要求を監視および処理し、これらの要求がアプリケーションからのものであるかどうかを確認する必要があります。
次のホットリンク防止ミドルウェア プログラムを作成してみましょう:
public class HotlinkingPreventionMiddleware { private readonly string _wwwrootFolder; private readonly RequestDelegate _next; public HotlinkingPreventionMiddleware(RequestDelegate next, IHostingEnvironment env) { _wwwrootFolder = envWebRootPath; _next = next; } public async Task Invoke(HttpContext context) { var applicationUrl = $"{contextRequestScheme}://{contextRequestHostValue}"; var headersDictionary = contextRequestHeaders; var urlReferrer = headersDictionary[HeaderNamesReferer]ToString(); if(!stringIsNullOrEmpty(urlReferrer) && !urlReferrerStartsWith(applicationUrl)) { var unauthorizedImagePath = PathCombine(_wwwrootFolder,"Images/Unauthorizedpng"); await contextResponseSendFileAsync(unauthorizedImagePath); } await _next(context); } }
このミドルウェアでは、ASP.NET Core の Request オブジェクトがリファラーを取得したい場合は、単に To be をカプセル化していないことがわかります。 HTTP ヘッダーを介してアクセスされます。
一般に、IApplicationBuilder 拡張機能があります:
public static class BuilderExtensions { public static IApplicationBuilder UseHotlinkingPreventionMiddleware(this IApplicationBuilder app) { return appUseMiddleware(); } }
最後に、これを使用するには、Configure 関数で上記の拡張機能を呼び出すだけです。
app.UseHotlinkingPreventionMiddleware();
3. 本当に擁護できるのか?
アンチリーチを突破するにはどうすればよいですか?参照を確認する方法としては、まずページミドルウェアに宛先アドレスの別のページを入力してから、そのページの参照が宛先サイト独自のものになります。画期的なことが達成されます。この点で使用できるツールは数多くありますが、特に成熟した Web プロジェクト テスト パッケージ (HtmlUnit など) は、リクエスト内で直接参照を設定できます。
盗まれた Web サイトが https プロトコルを使用しており、画像リンクが http である場合、https から http へ開始されたリクエストにはセキュリティ規制によりリファラーが含まれず、それによりアンチホットリンクがバイパスされます。
最後に、この方法はある程度までしか防御できず、すべての攻撃を排除することは不可能であるとしか言えません。Nginx などの成熟したサーバー アプリケーション ソリューションを使用することをお勧めします。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
画像のホットリンクを防ぐための Asp.Net Core のミドルウェアの使用に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。