我想限制对我的 IIS 网站上托管的某些资源的访问。
更具体地说,我希望这些资源(例如图像或 html 文件)只能在托管于完全相同的域和服务器上的页面内或从该页面中查看。不能直接访问,不能嵌入其他网站,不能从其他网站链接。
我还希望这些文件可以使用react.js从网站本身动态加载。
为此,我发现我可以检查 Sec-Fetch-Site 请求标头必须设置为同源才能接受请求。
因此在IIS重写规则模块中,在包含这些文件的特定文件夹上,我编写了一条重写规则为HTTP_Sec_Fetch_Site不等于同源,但它不起作用。
请告诉我如何编写这样的规则。
您可以尝试IIS URL重写规则以避免文件不被其他源使用。
Sec-Fetch-Site
标头是 HTTP 规范中相对较新的补充,可能并非在所有情况下都可用,尤其是在没有额外配置的情况下可能无法在 IIS URL 重写模块中直接访问。
<rule name="test" stopProcessing="true">
<match url=".*\.(jpg|jpeg|png|gif|bmp|html)$" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" />
<add input="{HTTP_REFERER}" pattern="www.sample1.com" />
</conditions>
<action type="AbortRequest" />
</rule>
在比赛网址中,您可以根据您的要求进行修改。或者您可以将 (.*) 作为模式。