XSS:跨站脚本(Cross-site scripting)
CSRF:跨站请求伪造(Cross-site request forgery)
XSS全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有JavaScript的内容文本。这时服务器端如果没有过滤或转移掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。
原则: 不相信客户输入的数据
注意: 攻击代码不一定在<script></script>中
CSRF,中文是跨站点请求伪造。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作,达到攻击目的。
CSRF攻击是源于Web的隐式身份验证机制!Web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。CSRF攻击的一般是由服务端解决的。
尽量使用POST,限制GET
GET接口太容易被拿来做CSRF攻击,当然POST并不是万无一失,攻击者只要构建一个form就可以,但需要在第三方页面做,这样就增加暴露的可能性。
浏览器Cookie策略
拦截第三方本地Cookie(Thired-party Cookie)的发生。
加验证码
Referer Check
Anti CSRF Token
现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)
例子:
这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构建一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。
注意:
CSRF的Token仅仅用于对抗CSRF攻击。当网站同时存在XSS漏洞时候,那这个方案也是空谈。所以XSS带来的问题,应该使用XSS的防御方案予以解决。
原文:https://www.cnblogs.com/xiaoxu-xmy/p/13719517.html