浅谈XSS、CSRF

1,184 阅读2分钟

XSS:跨站脚本攻击 js注入

分为三类:存储型(持久型)
         反射型(非持久型)
         DOM型
         

image.png (图片来自于XSS 原理和攻防 - Web 安全常识_哔哩哔哩_bilibili 02:59 侵删

反射型:一般出现在url链接中。通常通过邮件或者聊天地址给你一个点击地址。发出请求的时候,xss的代码出现在我们的访问链接中,作为一部分的输入提交到服务器。服务器解析之后做出响应。这段代码就会随着响应返回到浏览器中进行渲染。/

    也就是说xss代码会被web服务器反射回客户端进行执行。

存储型:最典型的情况在留言中。和反射型的区别在于提交的代码回存储在web服务器中(持久型)下一次请求的时候不需要再次请求。

XSS存在的原因:对url中的参数或者用户提交输入的地方没有提交过滤,造成的不合法的参数能够被提交到web服务器。但是我们没有办法对它进行完全充分百分百的过滤。 xss的防范:

image.png 图片来源于XSS 原理和攻防 - Web 安全常识_哔哩哔哩_bilibili 08:24 侵删

image.png同上,侵删 ps.session和cookie的区别

在node.js中如何做防范呢,使用js-xss库

CSRF:跨站点请求伪造

你可以这样去理解:攻击者盗用了你的身份,以你的名义去发送恶意请求

image.png 图源:CSRF 攻击和防御 - Web 安全常识_哔哩哔哩_bilibili 01:12 侵删 本质原因:上图右下角紫色的服务器验证不够 解决方法:在服务器服务端去做验证处理

1.尽可能使用post请求
2.加入验证码/滑块等等

3.验证Referer(http头上的字段)(当前请求的来源地址)(简单-方便的方案)但是也有网站可以篡改referer

4.anti CSRF token(最常用的):

1)在form表单或者头信息中传递一个随机产生的token
2)token存储在服务端(不在cookie,一般用户信息存储在cookie就极容易被CSRF攻击)
3)服务端通过拦截器验证token
4)校验失败就拒绝请求,token验证通过后要立刻销毁
(刚查看了感觉掘金不是使用的token,如有发现的请留言指正)
5)自定义header(本质上其实和4)一样的)