XSS和CSRF学习

142 阅读2分钟

www.cnblogs.com/lr393993507…

XSS是啥

  • 跨站脚本攻击,一种注入式的攻击方式

xss原因

  • 对用户的输入没有严格控制,导入数据库后而输出到页面

xss危害

  • 窃取数据,用户账号,非法转账等等

xss实例

<img src=0 onerror= alert(0)>

xss分类

  • 存储型(持久型)
  • 反射型(非持久型)
  • DOM型

存储型 留言板功能

提交留言=》存储到数据库=》访问时读取数据=》渲染到页面

反射型

  • 将恶意代码放到url中,直接反射到页面上,这种没有入库,所以是非持久型

DOM

  • 也属于反射型,也是通过网址注入,没有经过存储,区别在于渲染前后?!!,好吧我也没听太懂当时、

CSRF(跨站伪造请求)

  • 利用被害者的身份伪造请求
  • 实例
现有正常的网站A,恶意网站B,倒霉鬼受害者C;
C访问A网站。以用户登录的状态,这时候A网站会返回C用户的cookie,并保存到当前浏览器的会话窗口。同时,倒霉鬼C打开了恶意网站BB网站发情恶意请求,并且携带浏览器会话窗口携带的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