IIS防盗链:ISAPI Rewrite图片防盗链规则写法

IIS防盗链:ISAPI Rewrite图片防盗链规则写法以下ISAPIRewrite已经在我的服务器上正常运作。经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。详细如下;一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)代码:RewriteCondHost:(.+)RewriteCondReferer:(?!http://\1.*

大家好,又见面了,我是你们的朋友全栈君。

以下ISAPI Rewrite已经在我的服务器上正常运作。
经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。
详细如下;
一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)
代码:
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]
来个小解:
第一行同上
第二行同上
第三行通过正则表达式对第二行中的请求协义地址进行过滤,这里按上面的写法,过滤了所有流行的搜索引擎,当然也包括你自己的站,或是你同台服务器其它的站。每个不同的域名写法是\.baidu\.com,多个有|号相隔。如果是IP则这样写100\.100\.100\.100
第四行同上
这样说明应该不难理解吧,直接拿去用,按着原有格式改。
规则中出现的正则表达式符号小解:
. 表示匹配除换行符以外的任意字符
+ 表示前面的字符可以出现一到任意多次
* 表示前面的字符可以出现零到任意多次
() 表示一个表达组,可以拿它和加减乘除法一起理解
?! 表示断言这个符号后面的字符如果出现则不再进行接下去的匹配
\ 表示转义符号,比如网址中的.是规则内置的运算符号,要把它通过\转义成字符。
| 表示或者,用于连接多种可能
通过以上这“乱七八糟”的符号,竟然组成了如此强大的规则,感叹! ​
原文:http://bbs.chinaz.com/archiver/safe/thread-5158252-1.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163483.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月23日 下午3:46
下一篇 2022年7月23日 下午3:46


相关推荐

  • java static 存在哪里_java中的静态变量和Class对象究竟存放在哪个区域?「建议收藏」

    java static 存在哪里_java中的静态变量和Class对象究竟存放在哪个区域?「建议收藏」JDK7的官方解释:CurrentlystaticfieldsarestoredintheinstanceKlassbutwhenthosearemovedintonativememorywe’dhavetohaveanewcardmarkstrategyforstaticfields.Thiscouldbesomethinglik…

    2022年5月7日
    90
  • treemap 和 hashmap的效率比较

    treemap 和 hashmap的效率比较区别 1 hashmap 是无序的 treemap 是有序的 整个 key 是按照自然顺序来的 2 hashmap 可以 put 一个 null 当 key treemap 却不支持 3 底层结构不一样 一个是数组 红黑树 一个直接就是红黑树 但是 hashmap 是最最最常用的 map 集合 不考虑顺序的时候 他是首选 假如你希望有点顺序的话 想使用一下 treemap 但是整个 treemap 和整个 hashmap 的效率到底差别多少 不太确定 万一整个 treemap 效率很低 那就影响程序性能了 那就不好了 测试一下 有个底 简单

    2026年3月19日
    2
  • 黄仁勋:仅用3周 OpenClaw 超越 Linux 30年!

    黄仁勋:仅用3周 OpenClaw 超越 Linux 30年!

    2026年3月13日
    2
  • spring-boot-start 找pom配置链接地址

    spring-boot-start 找pom配置链接地址spring-boot-start 找pom配置链接地址

    2022年4月24日
    68
  • Pycharm安装opencv的几种办法(windows下)

    Pycharm安装opencv的几种办法(windows下)Pycharm 安装 opencv 的几种方法之前在默认环境中用 pip 安装过一次 opencv 当时就是参考比人方法弄 稀里糊涂的 然后今天想在自己别的环境下 tensorflow 下安装终于弄懂了一些 暂时发现了几种安装的方法 特此记录下 方法 1 在 Pycharm 自带的库中下载 暂且这么叫吧 如下图 这个方法我也是看别人说的 自己还没试过 描述也没介绍版本啥的 所以个人也不推荐 方法 2 就是

    2026年3月20日
    2
  • 随机森林(原理/样例实现/参数调优)

    决策树决策树与随机森林都属于机器学习中监督学习的范畴,主要用于分类问题。决策树算法有这几种:ID3、C4.5、CART,基于决策树的算法有bagging、随机森林、GBDT等。决策树是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策。新来的数据便可以根据这棵树进行判断。随机森林是一种通过多棵决策树进行优化决策的算法。案例:

    2022年4月9日
    142

发表回复

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

关注全栈程序员社区公众号