真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法

网站程序的URL伪装法、服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现

经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。

详细如下;

一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)

复制代码 代码如下:

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]

第一行通过RewriteCond的HOST定义其下的规则所适用的请求主机范围。

第二行通过RewriteCond的Referer定义规则适用的请求来源地址,我们都知道任何通过互联网方式访问网站都会留下Referer的痕迹,就好像我们在IIS日志里看到的一样。这里的(?!http://\1.*).*意思就是判断所有通过http协义发来的请求,都要应用规则。

第三行通过RewriteRule定义防盗链文件的后缀,这里仅是图片后缀,需要的可以添加mp3,rar等其它所有后缀。后面的/block.gif表示如果遇上这些后缀的文件被盗链后的转向,这里转向/根目录的block.gif,可以是HTML等任何文件。如果只想某个文件夹下面的文件不被盗链,只需要加上路径就可以。例如不想images和pic目录下的文件被盗,但其它可以。就要改写成:

RewriteRule (/images/|/pic/).*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]

这种情况主要是有些站长在别人友情链接里的图片地址是在自己这的。

最后面的[I,O,N],I表示不区分大小写,O表示对URL进行标准化,可能是用来处理Unicode编码的地址(例如包含中文的URL)以及QueryString的内容,N表示重新从站点请求文件而不是从本地缓存读取文件,目的是防止当用户访问了盗你链的网站后,再回到你的网站也出现盗链提示。

提示,由于此规则是通过Referer来获取带有http://字样的地址进行过滤,因此它无法防范其它协议的盗链,比如迅雷下载。但通过任何浏览器直接访问,只要是HTTP协义的,通杀。

以上关于RewriteCond和RewriteRule的作用仅是本人的土法理解,欢迎在这方面有专业研究的朋友在评论中指正,以免误导,另外如果遇到isapi-rewrite版本问题,只要保证后面的正则式写法正确就行。

二、排除性防盗链写法

复制代码 代码如下:

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteCond Referer: (?!http://(.*)(\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn|\.eojoo\.com)).*

RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteCond Referer: (?!http://(.*)(\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn|\.eojoo\.com)).*

RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]

第一行同上

第二行同上

第三行通过正则表达式对第二行中的请求协义地址进行过滤,这里按上面的写法,过滤了所有流行的搜索引擎,当然也包括你自己的站,或是你同台服务器其它的站。每个不同的域名写法是\.baidu\.com,多个有|号相隔。如果是IP则这样写100\.100\.100\.100

第四行同上

这样说明应该不难理解吧,直接拿去用,按着原有格式改。

规则中出现的正则表达式符号小解:

. 表示匹配除换行符以外的任意字符

+ 表示前面的字符可以出现一到任意多次

* 表示前面的字符可以出现零到任意多次

() 表示一个表达组,可以拿它和加减乘除法一起理解

?! 表示断言这个符号后面的字符如果出现则不再进行接下去的匹配

\ 表示转义符号,比如网址中的.是规则内置的运算符号,要把它通过\转义成字符。

| 表示或者,用于连接多种可能

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/3761.html

(0)
晴川运维晴川运维
上一篇 2025年6月4日
下一篇 2025年6月4日

相关推荐

  • IIS下防止mdb数据库被下载的实现方法

    解决access(mdb)数据库防止下载,一般有两种方法: 第一种方法:要求网站管理人员具体asp编程经验。因为现在的销售虚拟主机的系统,已经为用户建立了一个database目录,…

    IIS 2025年6月30日
  • IIS7.5 显示详细错误信息的方法

    使用Win7/Win2008/R2操作系统的用户在不断增加,Win7下测试程序时,如果程序出 错,iis7会提示HTTP Error 500 – Internal Se…

    IIS 2025年6月8日
  • IIS设置404页面图文教程(选择URL还是文件 )

    下面侯庆龙说明放置404页代码一些方方面面,希望大家能用到网站建设当中: <META http-equiv=refresh content=”3; url=htt…

    IIS 2025年7月5日
  • 服务器安全设置之 系统服务篇

    WindowsServer2003 + IIS6.0 + ASP 服务器安全设置之–组件安全设置篇 A、卸载WScript.Shell 和 Shell.applicat…

    IIS 2025年6月11日
  • win2003 服务器安全配置全套详解

    本文更侧重于防止ASP漏洞攻击,所以服务器防黑等方面的讲解可能略嫌少了点。 基本的服务器安全设置 安装补丁 安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果…

    IIS 2025年6月8日
  • 提高IIS网站服务器性能2点考虑(缓存+gzip)

    一、利用缓存,即内容过期 对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,图片、CSS、JavaScript均放在单独目录下,然后在IIS中选择目录,点属性-H…

    IIS 2025年6月21日
  • php对外发包引发服务器崩溃的终极解决方法分享[推荐]

    一、php对外发包分析 用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下: 复制代码 代码如下: $packets = 0; $ip = $_GET[\…

    IIS 2025年6月8日
  • Win2003 IIS6.0性能优化指南

    问:好多asp.net程序,放在一台服务器上,客户端连接使用一段时间后,在服务器上打开任务管理器一看,发现有很多w3wp.exe,占用内存很大,达到1g,请问为什么会这样?有什么办…

    IIS 2025年6月24日
  • 网站无法响应HTTP/1.1_Server Too Busy

    上网查了一下,引起的原因主要是由于网站程序中连接数据库的代码没有及时关闭造成的,这样链接多了以后就会造成链接数据库的链接到达峰值,不能再连接数据库,于是iis就报server to…

    IIS 2025年6月8日
  • iis 添加新的.shtml的影射

    执行文件是: C:\WINDOWS\system32\inetsrv\ssinc.dll 动作是:GET,POST 也可以为整台服务器的主机加上: 在管理区—虚拟主机服…

    IIS 2025年7月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注