barriers / 阅读 / 详情

CSRF跨站请求伪造的安全防护

2023-06-29 07:34:39
共1条回复
苏州马小云

大家好,我是中恒。本文主要介绍和总结了CSRF跨站请求伪造的基本原理和主要防范措施,工作中有用到的朋友不妨收藏转发一下,以备您参考。

CSRF跨站点请求伪造(Cross—Site Request Forgery),跟类似XSS攻击一样,存在着巨大的安全隐患,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却偷偷完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、转账等。

假如:Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。攻击大概过程如下:

目前,我们工作中常用于防御CSRF攻击主要有三种策略:

一、验证 HTTP Referer字段

根据 HTTP 协议,在 HTTP 头 中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如需要访问 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory,用户必须先登陆 bank.example,然后通过点击页面上的按钮来触发转账事件。这时,该转账请求的Referer值就会是转账按钮所在的页面的 URL,通常是以bank.example 域名开头的地址。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。

这种方法的显而易见的好处就是简单易行,网站的普通开发人员不需要操心 CSRF 的漏洞,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。

然而,这种方法并非万无一失。Referer 的值是由浏览器提供的,虽然 HTTP 协议上有明确的要求,但是每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,就是把安全性都依赖于第三方(即浏览器)来保障,从理论上来讲,这样并不安全。事实上,对于某些浏览器,比如 IE6 或 FF2,目前已经有一些方法可以篡改 Referer 值。如果 bank.example 网站支持IE6浏览器,黑客完全可以把用户浏览器的 Referer 值设为以 bank.example 域名开头的地址,这样就可以通过验证,从而进行 CSRF 攻击。

即便是使用最新的浏览器,黑客无法篡改 Referer 值,这种方法仍然有问题。因为 Referer 值会记录下用户的访问来源,有些用户认为这样会侵犯到他们自己的隐私权,特别是有些组织担心 Referer的值 会把组织内网中的某些信息泄露到外网中。因此,用户自己可以设置浏览器使其在发送请求时不再提供 Referer。当他们正常访问银行网站时,网站会因为请求没有 Referer 值而认为是 CSRF 攻击,拒绝合法用户的访问。

二、在请求地址中添加token并验证

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

这种方法要比检查 Referer 要安全一些,token可以在用户登陆后产生并放于 session 之中,然后在每次请求时把token从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把token以参数的形式加入请求。对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 http://url?csrftoken=tokenvalue。而对于 POST 请求来说,要在 form 的最后加上 ,这样就把 token 以参数的形式加入请求了。但是,在一个网站中,可以接受请求的地方非常多,要对于每一个请求都加上 token 是很麻烦的,并且很容易漏掉,通常使用的方法就是在每次页面加载时,使用 javascript 遍历整个 dom 树,对于 dom 中所有的 a 和 form 标签后加入 token。这样可以解决大部分的请求,但是对于在页面加载之后动态生成的 html 代码,这种方法就没有作用,还需要程序员在编码时手动添加 token。

该方法还有一个缺点是难以保证 token 本身的安全。特别是在一些论坛之类支持用户自己发表内容的网站,黑客可以在上面发布自己个人网站的地址。由于系统也会在这个地址后面加上 token,黑客可以在自己的网站上得到这个 token,并马上就可以发动 CSRF 攻击。为了避免这一点,系统可以在添加 token 的时候增加一个判断,如果这个链接是链到自己本站的,就在后面添加 token,如果是通向外网则不加。不过,即使这个 csrftoken 不以参数的形式附加在请求之中,黑客的网站也同样可以通过 Referer 来得到这个token值以发动 CSRF 攻击。这也是一些用户喜欢手动关闭浏览器 Referer 功能的原因。

三、在HTTP头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。

然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。另外,对于没有进行 CSRF防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的。

从springsecurity3.2.0版本开始就已经对csrf攻击提供防护。

版本升级配置

HTTP配置

前端配置

一般我们的项目中都有一个公用文件(如公用js文件),每个页面都会引用该文件,所以我们可以在通用文件中做类似如下配置:

$.ajaxSetup的意思就是给我们所有的ajax请求都加上这个header和token,或者放到form表单中:

注意, _csrf这个要与spring security的配置文件中的配置相匹配,默认为_csrf。

相关推荐

http请求头中Referer的含义和作用

设置防盗链时候指明和不指明空Referer的区别及实现后的效果? 什么是Referer? 这里的 Referer 指的是HTTP头部的一个字段,也称为HTTP来源地址(HTTP Referer),用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着 HTTP Referer 头部网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。 Referer的正确英语拼法是referrer。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。 比如,您如果点击下面资料来源后面维基百科的网址链接,那么浏览器会产生一个送到维基百科的Web服务器的HTTP请求,该请求中则会包含一个Referer字段(即本页面的地址): http://kb.qiniu.com/52pw6cde 什么是空Referer,什么时候会出现空Referer? 首先,我们对空Referer的定义为,Referer 头部的内容为空,或者,一个HTTP请求中根本不包含Referer头部。 那么什么时候HTTP请求会不包含Referer字段呢?根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。 比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。 那么在防盗链设置中,允许空Referer和不允许空Referer有什么区别? 在防盗链的白名单设置中,如果指名白名单中包含空的Referer,那么通过浏览器地址栏直接访问该资源URL是可以访问到的; 但如果不指名需要包含空的Referer,那么通过浏览器直接访问也是被禁止的。 原文链接: https://blog.csdn.net/hxl188/article/details/38964743
2023-06-28 23:44:341

浏览器 怎么查看referer

一、referer或HTTP referer:HTTP来源地址。是HTTP表头的一个字段,用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着HTTP来源地址,目前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。二、无法查看浏览器的下载来源。建议直接使用浏览器的升级功能。以IE为例:1、打开IE,当有新版本时会有如下提示;2、点下一步完成升级安装;3、重启电脑生效。
2023-06-28 23:44:431

获取请求头中的referer属性有什么用

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。 Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。 Request.ServerVariables("HTTP_REFERER")的用法(防外连接) 下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"): 1) 直接用<a href=""> 2) 用Submit或<input type="image">提交的表单(POST或GET) 3) 使用JAvaScript提交的表单(POST或GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 1) 从收藏夹链接 2) 单击主页或自定义的地址 3) 在浏览器中直接输地址 4) 使用JavaScript的Location.href或者是Location.replace() 5) <%Response.Redirect%> 6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向 7) 用XML加载地址 防外链代码例子(C#): if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())) { Server.Transfer("Error.aspx"); } =========================================================== 下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的: 1.直接用<a href> 2.用Submit或<input type=image>提交的表单(POST or GET) 3.使用Jscript提交的表单(POST or GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 1.从收藏夹链接 2.单击"主页"或者自定义的地址 3.利用Jscript的location.href or location.replace() 4.在浏览器直接输入地址 5.<%Response.Redirect%> 6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向 7.用XML加载地址 显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子: ref.asp <% response.write "You came from: " & request.servervariables("http_referer") %> ref.htm <% Response.AddHeader "Refresh", "10;URL=ref.asp" %> <meta http-equiv="refresh" content="10;URL=ref.asp"> <form method=GET action=ref.asp name=getform> <input type=submit value=" Go there (GET) >> "> <input type=image style="cursor:hand"> </form><p> 看看上面的代码会得到什么的结果. <form method=POST action=ref.asp name=postform> <input type=submit value=" Go there (POST) >> "> <input type=image style="cursor:hand"> </form><p> <a href="ref.asp">直接链接</a><p> <a href="#" onclick="window.location.href="ref.asp";return false;">Javascript location</a><p> <a href="#"onclick="window.location.replace("ref.asp");return false;">Javascript replace</a><p> <a href="#" onclick="document.getform.submit();return false;">javascript GET</a><p> <a href="#" onclick="document.postform.submit();return false;">javascript POST</a> Request.ServerVariables(HTTP_REFERER)的工作方式 在JSP中获取REFERER的方式是:request.getHeader("REFERER"); 在PHP中获取REFERER的方式是:$_SERVER["HTTP_REFERER"];
2023-06-28 23:44:561

关于Http请求header之Referer讲解

刚好把手机银行嵌入办事通的项目写完,该项目http请求较多,期间遇到了不少坑,也学到了不少东西,趁这个机会,简单梳理下! 图为http常见的请求方式,经常使用的,就是POST和GET,二者的区别,这里也不多做介绍。项目大致是这样的,提供接口给手机银行,获取请求参数: request.getQueryString()方法即可取得参数相关信息,随机访问办事通提供的三个接口,最初定的接口,使用https协议,但办事通无法提供CA证书,后放弃(上一篇有提到过,无法绕过ssl验证) 随后办事通提供了另外接口,采用http协议: 采用Http发个简单Post请求,即可获取相应数据,测试环境很快调试完毕上线,上了生产,发现无论怎么都取不到数据。联系了办事通技术人员,打印了http请求头header,说请求头得有Referer,以前只是知道有这么个东西,但不知道具体有什么用,今天就简单说说。 加了这么一句话,请求OK了。那么,Referer是什么东西? Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。 Referer作用是什么? 1)防盗链 比如办事通服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是zwfw.yn.gov.cn,如果是就继续访问,不是就拦截。 2)防止恶意请求 比如静态请求是 .html结尾的,动态请求是 .shtml,那么所有的*.shtml请求,必须 Referer为我自己的网站才可以访问,这就是Referer的作用。 空Referer是怎么回事? 空Referer是指Referer头部的内容为空,或者,一个HTTP 请求头中根本不包含Referer,那么什么时候HTTP请求会不包含Referer字段呢? 根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。 比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。 在防盗链设置中,允许空Referer和不允许空Referer有什么区别? 允许Referer为空,意味着你允许比如浏览器直接访问,就是空。 页面添加Referer元素需要使用meta referrer标签: 补充说明: Referer的正确英语拼法是 referrer 。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一,还有它第一个字母是大写。
2023-06-28 23:45:031

如何改变或伪造HTTP-REFERER

以前对Http中Referer的认识不够透彻。最近理了理,记录一下。1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。3 可以使用Fiddler修改Referer。选择 fiddler窗口的rules->customize rules…在打开的CustomRules.js记事本窗口中,找到如下位置 static function OnBeforeRequest(oSession: Session) { // Sample Rule: Color ASPX requests in RED // if (oSession.uriContains(“.aspx”)) { oSession["ui-color"] = “red”; }在这一句的后面加上 if(oSession.oRequest.headers.ExistsAndContains(“Referer”,”220.170.79.105″)) { oSession.oRequest.headers.Remove(“Referer”); }4 服务器端修改Referer,通过webClient,直接设置访问可以达到修改目的。
2023-06-28 23:45:101

web 请求 referer 可修改么

1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。3 可以使用Fiddler修改Referer。4 服务器端修改Referer,通过webClient,直接设置访问可以达到修改目的。5 其它的一些修改Referer的方式方法。参考:http://www.cnblogs.com/mx3000/archive/2007/12/17/1003239.html6 利用Referer防止图片盗链虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。(一般只允许站内访问)
2023-06-28 23:45:171

Nginx配置referer校验,实现简单的防盗链详解

1、Nginx Referer模块 nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求。当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。构造Referer的请求很容易实现,所以使用这个模块并不能100%的阻止这些请求。 2、valid_referers 指令 语法: valid_referers none | blocked | server_names | string … ; 配置段: server, location 指定合法的来源"referer", 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1. 需要注意的是:这里并不区分大小写的. 参数说明: none:请求头缺少Referer字段,即空Referer blocked:请求头Referer字段不为空(即存在Referer),但是值被代理或者防火墙删除了,这些值不以“http://”或“https://”开头,通俗点说就是允许“http://”或"https//"以外的请求。 server_names:Referer请求头白名单。 arbitrary string:任意字符串,定义服务器名称或可选的URI前缀,主机名可以使用*号开头或结尾,Referer字段中的服务器端口将被忽略掉。 regular expression:正则表达式,以“~”开头,在“http://”或"https://"之后的文本匹配。 例子: 上面配置合法的Referer为 www.abc.com / img.abc.com 和 无Referer(浏览器直接访问,就没有Referer) ; 其他非法Referer请求过来时, $invalid_referer 值为1 , 就return 403 , 或者重定向到一个403图片。
2023-06-28 23:45:351

如何修改referer php

referer是记录上一个请求的信息,这是当前请求无法修改的,也就相当于历史信息,已经定型了。如果你单纯的只是想改变php中 $_SERVER里面referer,你可以直接修改,只是个变量而已。当前请求能够伪造下一个请求的referer,具体你搜一下伪造referer
2023-06-28 23:45:421

http协议里referer是什么含义?

来源网站 ...比如你从 www.baidu.com 点击一个链接进入了另外的网站 ...另外的那个网站就可以通过判断 referer 知道你是从 baidu.com 来的 ...
2023-06-28 23:45:491

ajax发送http请求时Referer的问题 (困扰我也好几天,请高手不吝赐教)

不清楚。
2023-06-28 23:45:562

火狐浏览器怎么开启referer

要实现这个功能可以利用浏览器自带的developtools,在要抓包的页面点击F12,呼出调试界面。将选项卡切到:network,里面会展示所有的数据交互过程和内容;如果觉得该面板数据不够直观,还可以安装扩展:httprequester这个扩展,在要抓包的页面开启该扩展,界面中会有当前页面的post数据包的展示。
2023-06-28 23:46:051

百度地图中申请密钥时Referer白名单写什么

可以随便填写
2023-06-28 23:46:146

如何改变或伪造HTTP-REFERER

以前对Http中Referer的认识不够透彻。最近理了理,记录一下。1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。3 可以使用Fiddler修改Referer。选择 fiddler窗口的rules->customize rules…在打开的CustomRules.js记事本窗口中,找到如下位置 static function OnBeforeRequest(oSession: Session) { // Sample Rule: Color ASPX requests in RED // if (oSession.uriContains(“.aspx”)) { oSession["ui-color"] = “red”; }在这一句的后面加上 if(oSession.oRequest.headers.ExistsAndContains(“Referer”,”220.170.79.105″)) { oSession.oRequest.headers.Remove(“Referer”); }4 服务器端修改Referer,通过webClient,直接设置访问可以达到修改目的。5 其它的一些修改Referer的方式方法。参考:http://www.cnblogs.com/mx3000/archive/2007/12/17/1003239.html6 利用Referer防止图片盗链虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。(一般只允许站内访问)
2023-06-28 23:47:271

如何让浏览器在访问链接时不要带上referer

  我们在从一个网站点击链接进入另一个页面时,浏览器会在header里加上Referer值,来标识这次访问的来源页面。但是这种标识有可能会泄漏用户的隐私,有时候我不想让其他人知道我是从哪里点击进来的,能否有手段可以让浏览器不要发送Referer呢?  使用新增的html5的解决方案,使用rel=”noreferrer”,声明连接的属性为noreferrer,目前只有chrome4+支持.  使用中间页面,但实际上还是发送referrer的,比如使用Google的连接转向,noreferrer.js.  使用javascript协议链接中转,参见下面的说明.  新开一个窗口,相当于target=”_blank”:  function open_new_window(full_link){  window.open("javascript:window.name;", "<script>location.replace(""+full_link+"")</script>");  }  转向到一个连接,相当于target=”_self”:  function open_without_referrer(link){  document.body.appendChild(document.createElement("iframe")).src="javascript:"<script>top.location.replace(""+link+"")</script>"";  }
2023-06-28 23:47:361

如何改变或伪造HTTP-REFERER

1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。3 可以使用Fiddler修改Referer。选择 fiddler窗口的rules->customize rules…在打开的CustomRules.js记事本窗口中,找到如下位置 static function OnBeforeRequest(oSession: Session) { // Sample Rule: Color ASPX requests in RED // if (oSession.uriContains(“.aspx”)) { oSession["ui-color"] = “red”; }在这一句的后面加上 if(oSession.oRequest.headers.ExistsAndContains(“Referer”,”220.170.79.105″)) { oSession.oRequest.headers.Remove(“Referer”); }4 服务器端修改Referer,通过webClient,直接设置访问可以达到修改目的。5 其它的一些修改Referer的方式方法。参考:http://www.cnblogs.com/mx3000/archive/2007/12/17/1003239.html6 利用Referer防止图片盗链虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。(一般只允许站内访问)
2023-06-28 23:47:431

php,跳转,如何才能保留referer?

你好!方法很多,cookie和session就不用说了,还有一个就是使用查询参数保存就可以了,也就是,header跳转前在地址后面在加上一个reffer参数header("url.php?...&reffer=".当前的地址);如有疑问,请追问。
2023-06-28 23:48:011

apache Referer 怎么设置

  您好,很高兴为您解答,方法好下:  1。通过User-Agent浏览器类型限制  SetEnvIf User-Agent ^blueapple go_out  <directory /home/domain>  Order Allow,Deny  Allow from all  Deny from env=go_out  </directory>  2。通过Referer限制  SetEnvIf Referfer ^$ go_out  SetEnvIf Referfer ^(/|$)” go_out   <directory /home/domain>  Order Allow,Deny  Allow from all  Deny from env=go_out  </directory>  referer为空禁止访问。  如果我的回答没能帮助您,请继续追问。  转载,仅供参考。
2023-06-28 23:48:111

怎么知道网页的Referer参数,?

referer参数就是指问号后面的reg_id和song_id而参数“=”后面就是参数的值。接收网页可以通过接收参数的值来判断你的网页请求
2023-06-28 23:48:181

如何用 JavaScript 模拟 referer

:以前对Http中Referer的认识不够透彻。最近理了理,记录一下。 1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。 2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。 3 可以使用Fiddler修改Referer。
2023-06-28 23:48:251

火狐浏览器怎么抓包时怎么没有referer

火狐浏览器网络抓包方法如下:1、首先,打开火狐浏览器;然后,点击如下图箭头所指的位置。接着,点击弹出框中的“附加组件”。2、在圈中的框中输入“firebug”,然后按箭头所指的一样,点击搜索。3、 稍等一会,就搜索出了“Firebug 2.0.11“,点击安装即可。等待插件安装完成。
2023-06-28 23:48:322

safari浏览器怎么设置referer

#主要是以下部分br = mechanize.Browser()br.set_handle_referer()更为详细,来自stackoverflow: # Browserbr = mechanize.Browser()br.set_handle_referer(False) # allow everything to be written tobr.set_handle_robots(False) # no robot。
2023-06-28 23:48:461

java 如何获得referer字段值

在ie下必须是a标签传递的url才能通过request.getHeader("referer"); 取得
2023-06-28 23:49:002

如何将一个URL请求当作“Referer”发送

采用loadUrl()方法,其参数为additionalHttpHeaders;这在android 2.2之后都可用了。Map extraHeaders = new HashMap(); extraHeaders.put("Referer", " http://www.example.com"); WebView wv = (WebView) findViewById(R.id.webview); wv.loadUrl(" http://google.com", extraHeaders);
2023-06-28 23:49:191

什么是防盗链设置中的空Referer,防盗链设置Referer

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。做好防止盗链的工作,是每个网站开发者的重要工作。 做好防盗链工作能给网站服务器减少不少压力,这里我们分享一种php防盗链的实现方法: 一般的下载的步骤:查找->输出查找结果列表->进入软件详细页面->点击下载按钮->打开下载页面->点击下载,开始下载 我的方法就是在下载页面做文章 首先在网站的公共文件里定义一个$key=sdkfjwojf32413这相当于一个密钥一样 在下载页面生成一个随机数:$certcode = "84615354" (每次打开生成的都不一样) 然后用以上两个变量和软件的ID生成一个md5()加密串 然后生成软件的真实下载地址:file"); chdir($fileRelPath); $fileRootPath = getcwd() ."/"; $filePath=$HTTP_GET_VARS["file"]; $url=parse_url($_SERVER["HTTP_REFERER"]); if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost, $excludeReferArr)){ ?> 其实,反盗链方式也有不少, 这里只列出一个大概思想作为参考: (1)IIS 反盗链, 利用ISAPI_Rewrite,可作为Windows下反盗链的一个解决方案; (2) 图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传。 以上就是PHP防盗链的基本思想和设置方法,希望对大家的学习有所帮助。
2023-06-28 23:49:391

请教个问题,referer能够显示一个http请求是从啥页面链接过来的,那referer为空可能有些什么原因呢?

能想到的两个原因:1、写的程序自动访问页面,没有referer信息;2、在浏览器中直接写的url网址访问,没有referer信息
2023-06-28 23:50:011

JavaScript 能设置浏览器的 referer 吗

很多网站处于安全考虑是根据refer来验证的,如果本地js能够改变的话,那么这种解决方案显然是不适合的啊。所以本地js是不能改变浏览器refer的。
2023-06-28 23:50:111

修改http的头信息referer的问题

1. Pluggable Protocol. Windows的HTTP协议模快是可替换的2. Socket层, 用Layered Service; 以上在MSDN都能找到完善的文档资料.
2023-06-28 23:50:321

php怎么设置referer发送请求

curl里的curl_setopt ($ch, CURLOPT_REFERER, "http://xxx");
2023-06-28 23:50:391

前端面试—Http请求头中Referer的含义和作用

博客说明 HTTP Referer是 header 的一部分,当浏览器向web 服务器 发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。 假如在 www.google.com 里有一个 www.baidu.com 链接,那么点击进入这个 www.baidu.com ,它的header信息里就有:Referer= http://www.google.com 只允许我本身的网站访问本身的图片服务器,假如域是 www.google.com ,那么图片服务器每次取到Referer来判断一下域名是不是 www.google.com ,如果是就继续访问,不是就拦截。 将这个http请求发给服务器后,如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer不符合他的要求,就会拦截或者跳转到他要求的地址,然后再通过这个地址进行访问。 比如静态请求是 *.html 结尾的,动态请求是 *.shtml ,那么由此可以这么用,所有的 *.shtml 请求,必须Referer为我自己的网站。 定义 :Referer头部的内容为空,或者,一个HTTP请求中根本不包含Referer头部(一个请求并不是由链接触发产生的) 直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。 那么在防盗链设置中,允许空Referer和不允许空Referer有什么区别? 允许Referer为空,意味着你允许比如浏览器直接访问。 比对HTTP 请求的来源地址,如果Referer中的地址是安全可信任的地址,那么就放行 感谢
2023-06-28 23:50:571

网页的Http请求Referer怎么取值

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Refere...
2023-06-28 23:51:042

http请求header中referer和origin的区别

origin主要是用来说明最初请求是从哪里发起的;origin只用于Post请求,而Referer则用于所有类型的请求;origin的方式比Referer更安全点吧。
2023-06-28 23:51:111

http请求header中referer和origin的区别

origin主要是用来说明最初请求是从哪里发起的;origin只用于Post请求,而Referer则用于所有类型的请求;origin的方式比Referer更安全点吧。
2023-06-28 23:51:191

http请求header中referer和origin的区别

二者区别如下:origin主要是用来说明最初请求是从哪里发起的;origin只用于Post请求,而Referer则用于所有类型的请求;origin的方式比Referer更安全点吧。
2023-06-28 23:51:271

如何设置webbrowser的referer

var Flags, Headers, TargetFrameName, PostData: OLEVariant; Url, Ref: string; IEApp: OLEVariant;begin Flags := "1"; TargetFrameName := ""; PostData := ""; Url := "c:/BBS_POST2.html"; //我本地的表单网页文件 Ref := "http://XXX.XXXX.com/cachedir/1052/37/98/3798915_5.htm";//这里设置了 referer Headers := "Referer: " + Ref + #10 + #13; Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);//应该是带有 referer的 载入了本地将要提交的表单网页...end;procedure TForm1.Button3Click(Sender: TObject);//加一个 提交表单的按钮beginWebbrowser1.OleObject.Document.all.item("submit1").Click; //发送webbrowser1中的表单
2023-06-28 23:51:331

java发送post请求 如何修改referer或者origin的值

origin主要是用来说明最初请求是从哪里发起的;origin只用于Post请求,而Referer则用于所有类型的请求;origin的方式比Referer更安全点吧。
2023-06-28 23:51:511

如何设置webBrowser的referer

var Flags, Headers, TargetFrameName, PostData: OLEVariant; Url, Ref: string; IEApp: OLEVariant;begin Flags := "1"; TargetFrameName := ""; PostData := ""; Url := "c:/BBS_POST2.html"; //我本地的表单网页文件 Ref := "http://XXX.XXXX.com/cachedir/1052/37/98/3798915_5.htm";//这里设置了 referer Headers := "Referer: " + Ref + #10 + #13; Webbrowser1.Navigate(Url, Flags, TargetFrameName, PostData, Headers);//应该是带有 referer的 载入了本地将要提交的表单网页...end;procedure TForm1.Button3Click(Sender: TObject);//加一个 提交表单的按钮beginWebbrowser1.OleObject.Document.all.item("submit1").Click; //发送webbrowser1中的表单 ......
2023-06-28 23:51:581

cdn怎么空ref

cdn空ref当请求不是由链接触发产生。空Referer指的是HTTP请求中Referer头部内容为空,或者HTTP请求中不包含Referer头部。有两种情况Referer为空:当请求并不是由链接触发产生。比如,直接把地址输入地址栏里打开页面。从HTTPS页面上的链接访问到非加密的HTTP页面时,在HTTP页面上是检查不到Referer的。
2023-06-28 23:52:051

php取得页面来源,就是referer,

“HTTP_REFERER”链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是正确真实的。
2023-06-28 23:52:122

URL/Referer 是什么

就是连接地址
2023-06-28 23:52:201

用Nginx代理后,修改请求的Referer

在nginx.conf http块中添加 在需要的location块中添加 原referer = http://why 的referer 就会改成 http://hello 原referer = http://hello/world 会改成 http://helloabc/world
2023-06-28 23:52:271

请问nginx的referer的值是- 的情况下 有没有别的办法获取到用户的referer啊

referer由客户端浏览器提交,如果客户端提交的是空的,就没有其他办法获取该值
2023-06-28 23:52:341

网页的Http请求Referer怎么取值

1、抓取网页的内容 fetch2、抓取网页的文本内容 (去除HTML标签) fetchtext3、抓取网页的链接,表单 fetchlinks fetchform4、支持代理主机5、支持基本的用户名/密码验证6、支持设置 user_agent, referer(来路), cookies 和 header content(头文件)7、支持浏览器重定向,并能控制重定向深度8、能把网页中的链接扩展成高质量的url(默认)9、提交数据并且获取返回值10、支持跟踪HTML框架11、支持重定向的时候传递cookies要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。
2023-06-28 23:52:481

怎么用js代码修改referer的值?

给你一段PHP代码片段,我目前正在使用的,几乎不用修改,可以直接使用。第一次回答技术帖。<?php $url="XXX";//这里填写url $cookie="XXXXXXXXX"; //COOKIE值 $post_data=""; //post数据$useragent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MAXTHON 2.0)"; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_REFERER, "");//引号内填写你需要写的referer值curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_COOKIE,$cookie); curl_setopt($ch, CURLOPT_USERAGENT,$useragent); $result = curl_exec($ch); ?>
2023-06-28 23:53:061

php,跳转,如何才能保留referer?

最好就像楼上用GET方法了。。。
2023-06-28 23:53:132

js可以做到REFERER自定义吗

js不行,js是本地客户端的脚本。只能用phpjava来定义。
2023-06-28 23:53:261

这段PHP代码中,如何添加referer防盗链网址,实现跳转?

跟location类似,换成referer,值就是实际的值
2023-06-28 23:53:341

什么是IP防钓鱼和域名防钓鱼?

我个人是这样理解的,网络病毒泛滥的今天 会有很多无聊的人 霸占IP与域名访问量高的 当您的网站形成一定规模 他们就把鱼钩扔到您的网络区域 让访问您网站的用户,顺便也访问一下他的网站,或是病毒,或是色情。。。。 开启防御工具,会把风险降到最低。
2023-06-28 23:53:445

VC使用HTTP协议下载文件,如何添加请求头Referer和User-Agent?

typedef int (WINAPI ICE_DOWNLOADURL)( char *hostAddress,char *strObject,char *m_param,char *Referer,char *strFilename,char *strProxy); ICE_DOWNLOADURL *ice_downLoadUrl = 0; HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll"); if(hDLLDrv) { ice_downLoad = (ICE_DOWNLOADURL *)GetProcAddress(hDLLDrv, "ice_downLoad"); } if(icePub_downLoad) icePub_downLoad ("icese.net", "/icetool/other/sample.rar","", "http://baidu.com","sample.rar",""); if(hDLLDrv) FreeLibrary(hDLLDrv);
2023-06-28 23:54:001

js在跳转的时候怎么更改referer

处于安全考虑,浏览器不允许修改referer只能选择发送或不发送,以及何时发送,但不能更改referer的值
2023-06-28 23:54:201

如何利用prototype在ajax中设置referer头。

你放的是Referer 那读取的时候应该也用Referer啊 补充:那就不太清楚了,建议你拦截http请求和响应,比如httpwatch,来查看ajax发送的头信息是否到达服务器,然后服务器调试一下看是否接受到了这个信息并且是如何处理的
2023-06-28 23:54:272