设为首页收藏本站 开启辅助访问
搜索
    查看: 74896|回复: 13

    网站安全狗防盗链让网站资源更安全

      [复制链接]
    发表于 2011-12-28 09:12:20 | 显示全部楼层 |阅读模式
    所有官方发布的教程帖子,均附带有图片,请大家先注册论坛帐号之后浏览相关帖子,谢谢支持~

    说明:这次我们使用2台服务器进行防盗链测试,IP:192.168.73.128和192.168.73.129。192.168.73.128和192.168.73.129服务器内都架设基本的网站,架构模式为windows2003+iis+asp+access,192.168.73.129装有我们的网站安全狗(这里我们用虚拟机进行模拟)。我们用192.168.73.128盗取192.168.73.129的链接,具体过程我们就不多作说明,通过系统日志可以看到盗链的具体情况并且访问被盗链接时候会出现报错页面。分别如下图所示:


    1.jpg
    图表 1.非法盗链日志信息

    2.jpg
    图表 2.访问被盗链接的报错信息

    所谓盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。通过开启防盗链功能能更好的保护网站的资源,具体开启方式如下图所示:

    3.jpg
    图表 3.开启网站资源防盗链功能

    网站安全狗的防盗链有两种防护方式,分别是引用方式和会话方式。引用方式主要用于图片,下载资源等类型的防盗链(如JPG图片,GIF图片,RAR等下载资源)并且支持跨域名。会话方式主要用于流媒体类型的防盗链(如MP3,WMA等在线播放资源),会话方式只支持同一顶级域名但是两者都支持跨服务器。

    ①.引用方式
    引用方式:是通过判断referer变量的值来判断图片或资源的引用是否合法,只有在设定范围内的referer,才能访问指定的资源,从而实现了防盗链的目的。引用方式能够让本域名和其他指定信任域名正常链接被保护资源。具体设置方法如下图所示:

    4.jpg
    图表 4.防护方式—引用方式开启设置

    为了用户的使用方便,网站安全狗同时可以对信任域名添加白名单,信任域名将不在网站资源防盗链功能的防护之内,用户可以通过新增,删除,修改对信任域名进行操作,操作完成后必须进行保存才能生效,具体设置如下图所示:

    5.jpg
    图表 5.设置信任域名

    用户可以自定义的添加保护资源类型,为了更人性化的设置,我们由客户对网站资源进行自定义设置,用户可以通过新增,删除来添加保护资源类型,同时需要注意的是保护资源类型扩展名不需要.符号,只需刷入纯粹的扩展名,如rar。

    具体设置如下图所示:

    6.jpg
    图表 6.保护资源类型设置

    对于多站点的网站服务器用户可以自由设置不受防护的网站,避免一些需要对外开通资源链接的网站无法正常运营,可以通过新增和删除对不受防护的站点进行设置,具体如下图所示:

    7.jpg
    图表 7.设置不受防护的网站

    和众多模块一样,在捕获盗链攻击时,服务器会自动返回一个友情提示,用户可以自己设置友情提示的文字内容,具体设置如下图所示:

    8.jpg
    图表 8.设置捕获盗链攻击时服务器返回的信息

    ②.会话方式
    所谓会话反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名字一起加密成字符串(Session ID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。一般我们会把加密的Session ID作为URL参数的一部分传递给服务器,由于这个Session ID和用户的信息挂钩,所以别人就算是盗取了链接,该Session ID也无法通过身份认证,从而达到反盗链的目的。这种方式对于分布式盗链非常有效。会话方式的具体设置如下图所示:

    9.jpg
    图表 9.会话方式

    根据会话方式的定义描述,我们针对浏览器访问用户资源时设置了两种基本的浏览器行为,基于内存和基于文件。基于内存指的是浏览器访问资源链接时候产生的cookie不会写入文件,在关闭浏览器时cookie就会消失。而基于文件方式就是cookie会写入文件中但是有个过期时间,浏览器关闭后cookie不会消失。界面右边的用户名和密码就是系统自动从客户端获取到的用户信息,因为是自动获取所以一般默认设置即可无须进行更改,用户可以根据自己的需要选择这两种方式对资源进行防护,具体如下图所示:

    10.jpg
    图表 10.浏览器行为设置

    同时和引用方式一样保护资源类型(需要注意的是保护资源类型扩展名不需要.符号,只需刷入纯粹的扩展名,如rar。),不受防护的网站和捕获盗链攻击时服务器返回信息的提示都可以由用户自己进行设置。具体设置分别如下图所示:

    11.jpg
    图表 11.保护资源类型设置

    12.jpg
    图表 12.不受防护的网站设置

    13.jpg
    图表 13. 服务器返回信息提示


    回复

    使用道具 举报

    发表于 2011-12-28 10:23:21 | 显示全部楼层
    来自安全狗,好旨大的广告,还好我现在把安全狗所有的防护全关了,等有攻击时再开
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2011-12-28 13:45:16 | 显示全部楼层
    四海为家 发表于 2011-12-28 10:23
    来自安全狗,好旨大的广告,还好我现在把安全狗所有的防护全关了,等有攻击时再开

    不是广告啦
    还有啊,你这个做法,不建议,容易出危险……
    回复 支持 反对

    使用道具 举报

    发表于 2012-1-26 17:07:16 | 显示全部楼层
    防盗链不用整合网站就可以防了吗?
    我用过收费,免费的 都要整合网站SDK的 你们不用吗?
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2012-1-29 11:09:30 | 显示全部楼层
    !~﹎恒﹎~! 发表于 2012-1-26 17:07
    防盗链不用整合网站就可以防了吗?
    我用过收费,免费的 都要整合网站SDK的 你们不用吗?

    不用整合~
    回复 支持 反对

    使用道具 举报

    发表于 2012-1-29 20:20:34 | 显示全部楼层
    要支持一下。
    回复 支持 反对

    使用道具 举报

    发表于 2012-2-19 14:31:03 | 显示全部楼层
    呀`真的这么牛啊`不整合都可以啊
    回复 支持 反对

    使用道具 举报

    发表于 2012-4-3 16:24:35 | 显示全部楼层
    我是版主 发表于 2011-12-28 13:45
    不是广告啦
    还有啊,你这个做法,不建议,容易出危险……

    能不能设置浏览器来的可以下载资源。如果是通过采集软件来的禁止下载资源。可以实现这个吗?
    回复 支持 反对

    使用道具 举报

    发表于 2012-6-5 13:13:34 | 显示全部楼层
    我对这个很感兴趣,请教一下版主。你这里有两种方式:
    引用方式:是不是就是通过判断HTTP头域中的referer和Host之间的联系啊?然后这个联系具体又是什么样的呢?
    会话方式:这个会话方式是怎么实现的?还有我曾经看过一篇文章,好像说你着你这种会话方式不太妥当,应该就是我这里面的方法2和方法3吧。我把这个所有的方法都贴出来。你们为什么不选中方法8呢?

    方法1:判断引用地址
    这个方法是最早及最常见的方法。所谓判断引用地址,就是判断浏览器请求时HTTP头的Referer字段的值,这个值在asp.net里面可以用 Request.UrlReferrer属性取得。几个例子来说,在正常情况下当用户在浏览 http://uushare.com/abc.html 时点击一个链接去到 http://uushare.com/jacky.mp3[/url] 文件时,浏览器在发出请求jacky.mp3 资源时还会附带当刻浏览器所处的页面地址(即http://uushare.com/abc.html),所以当你的网站程序接收到下载 jacky.mp3 资源请求的时候,先判断http的referer字段的值,如果是从 自己的域名(uushare.com)过来的,则可以认为是合法的连接请求,否则就返回一个错误的提示信息。

    这种方法通常用于图片、mp3这种容易被人用html“嵌入”到其他网站的资源,使用这种方法可以防止你的图片直接出现在别人的网页里(或者防止mp3直接被其他网站嵌入到flash播放器里),不过访客使用下载工具还是可以轻松下载,因为现在的下载工具一般会自动用你的域名构造一个引用地址,所以如果想再进一步防范的话,可以使用一个对应表限制每个资源的引用地址,例如将 jacky.mp3 的引用地址限制为 [url]http://uushare.com/abc.html?id=12345,这样下载工具就不太可能构造一个“正确”的引用地址了。

    方法2:使用登录验证
    这个方法常见于论坛、社区。当访客请求网站上的一个资源时,先判断此请求是否通过登录验证(在asp.net里常用session或form验证来记录登录状态),如果尚未登录则返回一个错误提示信息。使用这个方法还可以进一步判断登录的用户的权限是否足够,以实现带“权限”的下载。
    不过因为登录状态依赖于会话id,而会话id往往储存于http请求的cookie字段里,下载工具一般没法获得浏览器的cookie字段,所以这些资源往往无法使用下载工具来下载,给正常合法用户带来诸多不便(因为大部分网民的系统都安装了下载工具,一点击下载链接一般会被下载工具拦截,导致无法使用浏览器本身的下载功能)。简单的解决方法是将这个session id放到URL中。
    这种方法的另外一个缺点是访客无法匿名下载,所以这个方法一般只用于论坛和社区网站。

    方法3:使用cookie
    其实这种方法原理上跟方法2差不多。就是在显示“下载”链接的页面里产生一个动态值的cookie,然后在处理资源下载请求时先判断cookie里有没有正确的cookie,如果没有则返回错误提示信息。至于这个动态值如何产生,只要能逆向判断动态值是否合法的都可以,例如将当前的时间去除秒数取哈希值(也叫散列值)。如果网页程序是asp.net则更简单,可以往Session里随便存一个字符串或数字,然后在处理下载请求时先检查Session里是否存在这个字符串或数字。使用这个方法的缺点跟方法2一样。

    方法4:使用POST下载
    客户端浏览器请求资源都是使用HTTP的GET方法的,其实使用POST方法也可以往客户端返回数据。所以可以将下载链接换成一个表单(Form)和一个按钮(Submit),将待下载的文件的名称或id放到表单的一个隐藏文本框(Input)里,当用户点击提交按钮时,服务程序先判断请求是否为POST方式,如果是则读取目标资源的二进制数据并写入响应对象(在asp.net里是respone.BinaryWrite方法)。
    使用这个方法的缺点同样是无法使用下载工具,更没法实现断点续传。 不过比方法2,3好一点的是,下载工具不会拦截你的下载动作,所以正常用户还是比较顺畅地下载到文件。这个方法比较适合小文件的下载。

    方法5:使用图形验证码
    使用这个方法可以保证每次下载都是“人”在你的网站上下载,而不是下载工具。因为网上很多介绍使用图形验证码的方法,所以这里就不再重复了。这个方法的缺点是比较容易让正常的用户感到麻烦。

    方法6:使用动态文件名
    也叫动态钥匙法,当用户点击一个下载链接时,先在程序端计算一个Key(使用一定规律产生的Key,最好不要使用随机字符串例如GUID,并且这个Key必须有一定时效的),然后在数据库或Cache里记录这个Key以及它所对应的资源ID或文件名,最后让网页重定向一个新的URL地址,这个新URL地址里需要包含这个Key。当浏览器或下载工具发出下载请求时,程序先检测这个Key是否存在,如果存在则返回对应的资源数据。
    使用这个方法的好处是下载工具也可以下载,并且在Key失效前可以断点续传,并且可以通过Key来控制下载的线程数。

    使用这个方法(包括以上所有支持下载工具的方法)的缺点是:当任意一个用户下载成功之后,你的资源就会被一些下载工具列入“资源候选名单”,以后其他人在其他地方下载同样的文件时,下载工具会不断连接你的服务器,即使你的文件已经删除或者Key已经失效了,这样会造成类DDos攻击的后果,下面再介绍两个即可以让下载工具下载,又可以防止盗链的方法。

    方法7:擅改资源的内容
    一般热门的资源都是电影、mp3、较大的压缩包等,这些文件都是有很多可以插入数据的地方的,例如mp3有一个tag区,rar/zip有一个备注区,电影的内容随便一个地方,只要在下载过程当中,动态地往这些地方注入一些随机的字节(几个字节即可),就可以达到让整个文件的哈希值(即散列值、指纹值)发生改变,让从你网站下载的文件的哈希值跟别人的不一样,就可以防止下载工具主动找上门了。用这个方法配合方法6,可以达到较好的防盗链的效果。缺点是,虽然文件被修改的部分不会被“看”、“听”出来,不过多多少少让知道的人觉得不爽。另外就是如果别人把从你网站下载的文件放到其他网站,那么仍然存在下载工具主动找上门的情况(虽然实际上它下载不了内容)。

    方法8:打包下载
    这个方法跟方法7的道理是一样的,只不过这次不是往原始文件里修改,而是在原始的文件基础上再加个“外壳”,让资源的哈希值跟别人的不一样。使用这个方法可以在不擅改资源原始的内容基础上实现方法6同样的效果,并且狠一点的话,甚至可以在打包的时候放入自己的一些广告。缺点是用户每次下载都得解压缩,不过目前大部分人都懂得解压,所以这个缺点有时可以忽略不计。
    回复 支持 反对

    使用道具 举报

    发表于 2012-7-9 15:21:13 | 显示全部楼层
    我想问!  信任域名支持 通配符 * 吗!!?? 急! 比如  *.baidu.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|手机版|安全狗论坛-汇聚安全的力量 ( 闽ICP备14014139号-1  

    GMT+8, 2017-9-23 04:25 , Processed in 0.266226 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表