资讯专栏INFORMATION COLUMN

CSRF和XSS的攻击和防御(笔记干货)

tianhang / 2197人阅读

摘要:攻击及防御中文名称跨站请求伪造,攻击者盗用客户的身份,以客户名义发送恶意请求。攻击及防御全称跨站脚本攻击,就是通过向网站写入脚本来实现攻击。后端接收请求时,验证请求是否含有攻击请求,并对攻击请求进行截取屏蔽。

                            CSRF攻击及防御:

CSRF 中文名称:跨站请求伪造,攻击者盗用客户的身份,以客户名义发送恶意请求。

产生原因:如图

当用户访问一个安全的网站A,A返回给客户端一个正确的cookie,但是用户在没
有登出A的网站情况下登录B危险网站,B要求访问第三方站点,这时候会通过用户
向安全的网站那A发出一个不合理的危害请求,这时候由于请求带着cookie A不
知道这是危险网站发出的,以为是用户正常发出的,导致危害。

防御方法:

①:利用攻击者不能获得第三方的Cookie(理论上),在页面增加加密的cookie值,以及Hash值,当发送请求的时候服务器对加密的cookie进行验证,并验证hash以便确认是真正客户。
②: 每次的用户提交都需要用户在表单中填写一个验证码,这样可以有效的防止其他网站恶意攻击。

                XSS攻击及防御:
            

XSS全称跨站脚本攻击,就是通过向网站写入js脚本来实现攻击。攻击者在Web页面里插入恶意html代码,当用户浏览该网页时,嵌入其中代码会被执行,从而达到攻击用户的目的。

XSS分两种类型:
① 非持久性攻击:
在URL的后面拼接 那么用户打开此链接,就会直接执行js,这种攻击都是一次性的,诱使别人点击,从而通过执行脚本,获取对方的cookie。你得到对方的cookie后,就可以为所欲为了。

② 持久性攻击:
这种攻击就不是在url上下手了,而是直接把注入代码写到网站数据库中。有些网站呢,是内容生成网站,比如很多的博客站,此时,如果不对用户输出的内容加以过滤,就可以注入一些js脚本内容。这样,别人看到这篇博客时,已经在执行他写的js脚本了。(新浪种过大招。。)

解决方案:
①:前端后端在显示数据和存储数据的时候,对标签进行转义过滤,比如将

阅读需要支付1元查看
<