HTTP-REFERER这个变量本来是用来验证你所打开页面的来源的,防止别的网站盗链,不过已经越来越不可靠了,完全就是可以伪造出来的。
以下是伪造方法:
ASP:dim http
set http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP也可以
Http.open "GET",url,false
Http.setRequestHeader "Referer","http://www.05809.cn/"
Http.send() PHP(前提是装了curl):$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.05809.cn/xxx.asp");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.05809.cn/");
curl_exec ($ch);
curl_close ($ch);
PHP(不装curl用sock)
$server = 'www.dc9.cn';
$host = 'www.dc9.cn';
$target = '/xxx.asp';
$referer = 'http://www.dc9.cn/'; // Referer
$port = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
$out = "GET $target HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEG\r\n";
$out .= "Referer: $referer\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}VB.NET/C#.NETDim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()
或者
MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..
javascript
xmlHttp.setRequestHeader("Referer", "http://URL");
JS不支持(郁闷中。。。)
原理都是sock构造http头来senddata。其他语言什么的比如perl也可以,
目前比较简单的防御伪造referer的方法是用验证码(Session)。
现在有一些能防盗链软件的商业公司比如UUDOG,linkgate,VirtualWall什么的,都是开发的应用于IIS上面的dll。
有的是采用cookies验证、线程控制,有的是能随机生成文件名然后做URL重写。有的方法能的确达到不错的效果.
反盗链 1、不定期更名文件或者目录
不定期的更改文件或者目录的名称,是最原始的反盗链的方式,可以比较有效地防止盗连,这种方法一般工作量比较大。但是批量的文件改名是完全可以自动化的,而且也比较容易实现。在文件的更名过程中, 可能会有客户正在下载该文件,这样会导致正常的客户访问失败,尽管这个问题容易解决,但是也不能够忽视。
2、限制引用页
这种防盗链原理是,服务器获取用户提交信息的网站地址,然后和真正的服务端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。实现时可以使用HTTP_REFERER1 和htaccess 文件(需要启用mod_Rewrite),结合正则表达式去匹配用户的每一个访问请求。对于每一个HTTP 请求, 服务器都要查找.htaccess 文件,增加了读取文件的次数,一定程度上降低了性能。另外,服务器打开这个功能,有比较多的限制。
3、文件伪装
文件伪装是目前用得最多的一种反盗链技术,一般会结合服务器端动态脚本(PHP/JSP/ASP)。实际上用户请求的文件地址,只是一个经过伪装的脚本文件,这个脚本文件会对用户的请求作认证,一般会检查Session,Cookie 或HTTP_REFERER 作为判断是否为盗链的依据。而真实的文件实际隐藏在用户不能够访问的地方,只有用户通过验证以后才会返回给用户。
4、加密认证
这种反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名字一起加密成字符串(Session ID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。一般我们会把加密的Session ID 作为URL 参数的一部分传递给服务器,由于这个Session ID 和用户的信息挂钩,所以别人就算是盗取了链接,该Session ID 也无法通过身份认证,从而达到反盗链的目的。这种方式对于分布式盗链非常有效。
5、随机附加码
每次,在页面里生成一个附加码,并存在数据库里,和对应的图片相关,访问图片时和此附加码对比,相同则输出图片,否则输出404图片
6、其它方法
其它反盗链方式也有不少, 这里只列出一个大概思想作为参考:⑴ IIS 反盗链, 利用ISAPI_Rewrite,可作为Windows下反盗链的一个解决方案;⑵ 图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传。
不过道高一尺,魔高一丈,这些雕虫小技终归是有破解方法的。
分享到:
相关推荐
本文将详细介绍如何利用 Nginx 的 `referer` 指令进行防盗链配置。 `Referer` 字段在 HTTP 请求头中用于指示用户是从哪个 URL 跳转到当前请求的页面的。在图片防盗链的场景下,如果 Nginx 服务器接收到一个请求,其...
例如,如果你在A网站点击了一个链接跳转到B网站,B网站的服务器就能通过"Referer"头了解到用户是从A网站来的。这个信息对于分析用户行为、追踪流量来源等具有重要意义。 然而,"Referer"头同样可以被用来实施防盗链...
JavaScript中的`referer`是一个关键的HTTP头部字段,它记录了用户从哪个URL访问了当前页面。这个信息对于网站分析、追踪用户来源以及了解流量来源至关重要。在JavaScript中,我们可以使用`document.referrer`来获取...
CSRF绕过Referer技巧详解 CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的Web攻击方式,攻击者可以通过构造恶意页面诱骗用户执行非法操作。为了防御CSRF攻击,Web开发者通常会使用Referer头来判断...
本代码是处理android hybrid混合应用,遇到的webview 拦截 header referer 问题的解决。 场景:angular $HTTP 或者js的http请求或者其他。。webview成功拦截get 、post、delete请求,添加header,referer以及body ...
为了在每次导航时修改`Referer`,我们需要在BHO的`IBrowserService`实现中监听`BeforeNavigate2`事件。当用户点击链接或者通过其他方式改变URL时,这个事件会被触发。在事件处理函数中,我们可以获取到即将发送的...
laravel-referer, 记住原始访问者引用者 记得一个访问者引用者 在会话中记住访问者的原始引用者。 引用程序为( 优先优先级优先):utm_source 查询参数如果URL中存在外部主机,则来自请求头的Referer的域空白安装你...
超全面javaweb教程28天第10天_12_request之使用Referer请求头完成防盗链
$out .= "Referer: $referer\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ``` - **解释**: 这段代码通过`fsockopen()`...
使用Meta标签控制Referer的方式十分灵活,可以通过设置为“never”来禁止发送任何Referer信息,或者设置为“always”、“origin”、“default”等,以达到不同程度的控制。这种控制方式对于保护用户隐私以及防止敏感...
express-referer是一个基于Javascript开发的防盗链Node.js项目,包含520个文件,其中包括170个JavaScript文件、127个Markdown文件、87个JSON文件、19个TypeScript文件、17个ESLint配置文件、17个YAML文件、12个NYCrc...
如果URL中存在外部主机,则来自请求的Referer标头中的域 空的 支持我们 我们投入了大量资源来创建。 您可以通过来支持我们。 非常感谢您从家乡寄给我们一张明信片,其中提到您使用的是哪个包装。 您可以在上找到...
`Referer`头通常用于服务器追踪用户从哪个页面访问当前请求的资源,但在某些情况下,我们可以利用它来解决特定的限制或安全策略。 描述中提到的问题是,在使用XMLHttpRequest(通常称为Ajax)进行文件下载时,如果...
【百度取消referer关键词显示】这一举措是搜索引擎巨头百度在隐私保护和网络安全方面的重要步骤。此前,网站管理员和第三方工具可以通过referer头部信息了解到用户是通过哪个关键词进入网站的,这为数据分析和优化...
当用户从一个外部链接访问网站资源时,浏览器通常会在请求头中携带`Referer`字段,表明是从哪个页面发起的请求。如果`Referer`不在允许的列表内,网站服务器就会拒绝提供资源。 Java中,我们可以利用`java.net....
$out .= "Referer: $referer\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ``` #### .NET环境中的HTTP-REFERER伪造 在...
然而,在不同的浏览器和特定情况下,`Referer` 的行为可能有所不同,尤其是在Internet Explorer(IE)中。 标题提到的问题在于,当在IE浏览器中使用`window.location.href`进行页面跳转时,`Referer`头字段可能不会...
echo "referer: " . $_SERVER["HTTP_REFERER"]; ?> ``` 在这个例子中,我们使用cURL初始化一个会话,并设置请求头来包含伪造的IP和HTTP_REFERER。然后,通过`curl_exec`执行请求,服务器端的`ip.php`文件将接收到...
标题中的“discuz不修改代码达到允许referer跳转到同顶级域名的解决方案”是指在Discuz论坛系统中,不通过修改源代码的方式,实现允许页面重定向到同一个顶级域名下的不同子域名。Discuz默认的防跨域策略是不允许...