作家
登录

CSRF攻击与防御,web安全的第一防线(源码,实战,5分钟科普文)

作者: 来源: 2018-01-29 23:02:51 阅读 我要评论

以CSRFTester对象为例,CSRF马脚检测对象的测试道理如下:

应用CSRFTester进行测试时,起首须要抓取我们在浏览器中拜访过的所有链接以及所有的表单等信息,然后经由过程在CSRFTester中修改响应的表单等信息,从新提交,这相当于一次捏造客户端请求。如不雅修改后的测试请求成功被网站办事寡居收,则解释存在CSRF马脚,当然此款对象也可以被用来进行CSRF进击。

五、CSRF马脚防御

今朝防御 CSRF 进击重要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

GET接口太轻易被拿来做CSRF进击,看第一个示例就知道,只要结垢荷琐img标签,而img标签又是不克不及过滤的数据。

接口最好限制为POST应用,GET则无效,降低进击风险。

当然POST并不是万无一掉,进击者只要结垢荷琐form就可以,但须要在第三方页面做,如许就增长裸露的可能性。

2、浏览器Cookie策略

IE6、7、8、Safari会默认拦截第三方本地Cookie(Third-party Cookie)的发送。

然则Firefox2、3、Opera、Chrome、Android等不会拦截,所以经由过程浏览器Cookie策略来防御CSRF进击不靠谱,只能说是降低了风险。

PS:Cookie分为两种

Session Cookie(在浏览器封闭后,就会掉效,保存到内存里),

Third-party Cookie(即只有到了Exprie时光后才会掉效的Cookie,这种Cookie会保存到本地)。

四、CSRF马脚检测

3、加验证码

验证码,强迫用户必须与应用进行交互,才能完成最终请求。在平日情况下,验证码能很好遏制CSRF进击。

第二个隐蔽页面(test2):

然则出于用户体验推敲,网站不克不及给所有的操作都加上验证码。

4、Referer Check

Referer Check在Web最常见的应用就是“防止图片盗链”。

同理,Referer Check也可以被用于检查请求是否来自合法的“源”(Referer值是否是指定页面,或者网站的域),如不雅都不是,那么就极可能是CSRF进击。

然则因为办事器并不是什么时刻都能取到Referer,所以也无法作为CSRF防御的重要手段。

5 、Anti CSRF Token

如今业界对CSRF的防御,一致的做法是应用一个Token(Anti CSRF Token)。

例子:

1、用户拜访某个表单页面。

2、 办事端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。

3、在页面表单附带上Token参数。

4、用户提交请求后, 办事端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则不法请求。

这个Token的值必须是随机的,弗成猜测的。因为Token的存在,进击者无法再结垢荷琐带有合法Token的请求实施CSRF进击。别的应用Token时应留意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX情势提交,避免Token泄漏。

留意:

CSRF的Token仅仅用于对抗CSRF进击。当网站同时存在XSS马脚时刻,那这个筹划也是空口说。

所以XSS带来的问题,应当应用XSS的防御筹划予以解决。

特别是在一些论坛之类支撑用户本身揭橥内容的网站,黑客可以在膳绫擎宣布本身小我网站的地址。因为体系也会在这个地址后面加上 token,黑客可以在本身的网站上获得这个 token,并立时就可以动员 CSRF 进击。为了避免这一点,体系可以在添加 token 的时刻增长一个断定,如不雅这个链接是链到本身本站的,就在后面添加 token,如不雅是通向外网则不加。不过,即使这个 csrftoken 不以参数的情势附加在请求之中,黑客的网站也同样可以经由过程 Referer 来获得这个 token 值以动员 CSRF 进击。这也是一些用户爱好手动封闭浏览器 Referer 功能的原因。

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

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

六、最后聊聊XSS

然而这种办法的局限性异常大年夜。XMLHttpRequest 请求平日用于 Ajax 办法中对于页面局部的异步刷新,并非所有的请求都合实用这个类来提议,并且经由过程该类请求获得的页面不克不及被浏览器所记录下,大年夜而进行进步,撤退撤退,刷新,收藏等操作,给用户带来不便。别的,对于没有进行 CSRF 防护的遗留体系来说,要采取这种办法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,如许几乎是要重写全部网站,这价值无疑是不克不及接收的。

恶意进击者往Web页面里插入恶意Script代码,当用户浏览该页刹那,嵌入个中Web琅绫擎的Script代码会被履行,大年夜而达到恶意进击用户的目标。

XSS进击分成两类

来自内部的进击:

PS:别的如不雅网站返回HTTP头包含P3P Header,那么将许可浏览器发送第三方Cookie。

重要指的是应用法度榜样自身的马脚,构造跨站语句,如:dvbbs的showerror.asp存在的跨站马脚。

来自外部的进击

重要指的本身构造XSS跨站马脚网页或者寻找非目标机以外的有跨站马脚的网页。如当我们要渗入渗出一个站点,我们本身结垢荷琐有跨站马脚的网页,然后构造跨站语句,经由过程结合其它技巧,如社会工程学等,欺骗目标办事器的治理员打开。

XSS分为:存储型憾ゴ射型

存储型XSS:

存储型XSS,持久化,代码是存储在办事器中的,如在小我信息或揭橥文┞仿等处所,参加代码,如不雅没有过滤或过滤不严,那么这些代码将储存到办事器中,用户拜访该页面的时刻触发代码履行。这种XSS比较危险,轻易造成蠕虫,偷盗cookie(固然还有种DOM型XSS,然则也照样包含在存储型XSS内)。


  推荐阅读

  2018年雇主青睐的编程语言排行榜出炉,这次第一终于不是Java了!

16岁到20岁开端学代码的居多。 近日,2018 年开辟者技能查询拜访申报已经出炉了。这份申报是由大年夜名鼎鼎的HankerRank宣布的。该查询拜访申报也显示了2018年雇主青睐的编程说话排行榜。在>>>详细阅读


本文标题:CSRF攻击与防御,web安全的第一防线(源码,实战,5分钟科普文)

地址:http://www.17bianji.com/lsqh/40492.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)