XSS、CSRF攻击和防御

互联网的发展,使各种WEB应用也变得越来越复杂,满足了用户的各种需求,但随之而来的就是各种网络安全的问题。

对于前端安全漏洞这块之前自己也是一点都没接触,但真正在业务上遇到了,才不得不重视起来,前段时间也给公司前端小伙伴们分享了一些简单的关于xss csrf攻击的例子与解决办法,整理总结了一篇学习笔记~前端安全不容忽视,不说深入研究其门道,至少要了解它的攻击方式,能让我们最大限度的防范。

一、XSS (跨站脚本攻击)

实际案例:

为了用户能在登录之后访问到之前浏览的页面,所以在url加入了一个service参数,但是未对它做任何校验,可能会被钓鱼网站利用。

XSS、CSRF攻击和防御_第1张图片
攻击实现条件
试着在亚马逊输入
XSS、CSRF攻击和防御_第2张图片
返回结果

⭐️上述操作,当我们在搜索栏中输入对应的恶意脚本代码,服务器端进行处理,当未找到匹配内容时简单返回我们输入的查询字符串,如果网站前端或者服务器端没有对查询字符串做恰当的处理,只是简单返回并插入到页面中,那这段恶意脚本代码很可能被当做正常的script标签解释执行。后果就是泄露了自己账户的cookie。


XSS、CSRF攻击和防御_第3张图片
XSS攻击类型
XSS、CSRF攻击和防御_第4张图片
常见攻击方法
XSS、CSRF攻击和防御_第5张图片
XSS的防御-输入


XSS、CSRF攻击和防御_第6张图片
XSS的防御-输出


XSS、CSRF攻击和防御_第7张图片
XSS的防御-输出


XSS、CSRF攻击和防御_第8张图片
总结

⭐️ 扩展:1.将重要的cookie标记为httpOnly,HttpOnly是在设置cookie时接受的一个参数,一旦被设置,在浏览器的document对象中就看不到cookie了,这样的话Javascript 中的document.cookie语句就不能获取到cookie了


二、CSRF (跨站请求伪造)

CSRF可以做什么?

攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全

原理:

1.用户登录受信任网站A,并在本地生成Cookie。

2.在不登出A的情况下,访问危险网站B。


小白示例1:

银行网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000

危险网站B,它里面有一段HTML的代码如下:

用户操作:登录了银行网站A,然后访问危险网站B,发现你的银行账户少了1000块


小白示例2:

银行A改用POST请求进行转账操作,如下表单:

XSS、CSRF攻击和防御_第9张图片
银行表单

危险网站B,还是这句代码:

PS: 后台如果使用$_REQUEST去获取请求的数据,而$_REQUEST既可以获取GET请求的数据,也可以获取POST请求的数据,结果同上。

:) 继续改良版:如果后台使用$_POST只获取POST请求,危险网站B又将代码修改成下面这样,暗地里发送了POST请求到银行:

XSS、CSRF攻击和防御_第10张图片
危险网站B改良代码

结果同上,钱还是被转走了!

⭐️这些攻击模式,可以看出CSRF攻击是源于WEB的隐式身份验证机制,WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但无法保证该请求是用户批准发送的。

CSRF的防御

1、客户端页面增加伪随机数:在表单里增加Hash值,以认证这确实是用户发送的请求,服务器端进行Hash值验证

2、验证码(易用性不太好):每次的用户提交都需要用户在表单中填写一次随机字符串

3、验证 HTTP Referer 字段: 在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址,银行对于每一个转账请求验证其 Referer 值,如果是以www.mybank.com开头的域名,说明该请求是来自银行网站自己的请求

4、在请求地址中添加 token 并验证:在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求

5、Chrome下,可以让第三方访问时不带Cookies ——SameSite属性

(敏感信息设置SameSite:strict,不敏感的信息不设置)

strict任何来自第三方的请求都不能使用 Cookies ,包括通过链接点进来的

lex只有比较敏感的操作不带 Cookies ,比如表单提交

你可能感兴趣的:(XSS、CSRF攻击和防御)