XSS是啥
- 跨站脚本攻击,一种注入式的攻击方式
xss原因
- 对用户的输入没有严格控制,导入数据库后而输出到页面
xss危害
- 窃取数据,用户账号,非法转账等等
xss实例
<img src=0 onerror= alert(0)>
xss分类
- 存储型(持久型)
- 反射型(非持久型)
- DOM型
存储型 留言板功能
提交留言=》存储到数据库=》访问时读取数据=》渲染到页面
反射型
- 将恶意代码放到url中,直接反射到页面上,这种没有入库,所以是非持久型
DOM
- 也属于反射型,也是通过网址注入,没有经过存储,区别在于渲染前后?!!,好吧我也没听太懂当时、
CSRF(跨站伪造请求)
- 利用被害者的身份伪造请求
- 实例
现有正常的网站A,恶意网站B,倒霉鬼受害者C;
C访问A网站。以用户登录的状态,这时候A网站会返回C用户的cookie,并保存到当前浏览器的会话窗口。同时,倒霉鬼C打开了恶意网站B。B网站发情恶意请求,并且携带浏览器会话窗口携带的cookie,此时A根据cookie,进行请求的操作。
当页面渲染该图片时会发起get请求。
浏览器的cookie保存机制
- session cookie ,浏览器不关闭则不失效
- 本地cookie ,过期时间内不管浏览器是否关闭都不失效
CSRF和XSS的区别
- xss 利用对用户输入的不严谨执行JS语句
- CSRF 伪造受信任用户发送请求
- CSRF可以通过XSS实现
CSRF的攻击方式
- html CSRF 主要通过html标签发起请求
<link href="">
<img src=''>
<frame src=''>
- JSON Hijacking 构造自定义的回调函数
<script>
function a (a){
alert('a')
}
</script>
<script src="http://www.a.com/json?callback=a"></script>
SCRF防御
- 通过验证码进行防御
通过人工验证的方式来验证,无法自动执行某些表单验证或者其他形式的数据库操作。类似于表单验证中的滑块
-
检查请求来源 每个请求都会到一个Referer,从哪个页面发来的请求;判断是否同域;但是可以模仿相同域发送请求
-
token方式
服务器下发一个随机 Token(算法不能复杂),每次发起请求时将 Token 携带上,服务器验证 Token 是否有效。
- node可以使用 csurf中间件来防御csrf攻击
学习笔记 that's all