「黑客攻击手段」CSRF攻击,你越好奇,离你的账户越近( 二 )


防御措施检查Referer字段
HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址 。在处理敏感数据请求时,通常来说,Referer字段应和请求的地址位于同一域名下 。以上文银行操作为例,Referer字段地址通常应该是转账按钮所在的网页地址,应该也位于www.examplebank.com之下 。而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于www.examplebank.com之下,这时候服务器就能识别出恶意的访问 。
这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验 。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段 。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段 。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能 。
添加校验token
由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行CSRF攻击 。这种数据通常是表单中的一个数据项 。服务器将其生成并附加在表单中,其内容是一个伪乱数 。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验 。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验token的值为空或者错误,拒绝这个可疑请求 。
稿源:
https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/
https://www.jianshu.com/p/e825e67fcf28
https://www.cnblogs.com/hyddd/




推荐阅读