XSS攻击和CRSF攻击的理解

1,807

1、XSS攻击

       xss攻击是指攻击者在网站上注入恶意客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。 

攻击方式,注入恶意脚本一般包括Javascript,有时也会包含HTML和Flash,共同点为:将一些隐私数据像cookie、session发送给攻击者,将受害者重定向到一个由攻击者控制的网站,

分类:

反射型(非持久型)

       反射型XSS只是简单地把用户输入的数据 "反射"给浏览器,需要用户点击一个恶意链接,或者提交一个表单,或者计入一个恶意的网站时,注入脚本进入被攻击者的网站。

存储型(持久型)

       存储型:会把用户输入的数据"存储"在服务器端,当浏览器请求数据时,脚本从服务器上传回并执行。 

基于DOM:

       基于DOM指通过恶意脚本修改页面的DOM结构,是纯粹发生在客户端的攻击。 

XSS攻击的防范: 

       1、输入检查 对用户的任何输入进行检查、过滤和转义。建立可信任的字符和HTML标签白名单,对于不在白名单的字符或者标签进行过滤或编码。 

       2、输出检查 服务器的输出也会存在问题,一般除富文本的输出外,在变量输出到HTML页面时,可以使用编码或者转义的方式来预防XSS攻击。

2、CSRF 跨站请求伪造,

       是一种劫持受信任用户向服务器发送非预期请求的攻击方式。 通常情况下,CSRF攻击时攻击者借助受害者的Cookie骗取服务器的信任,可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击服务器,从而在未授权的情况下进行操作。

CSRF的防范 

       1、验证码 CSRF攻击往往是用户不知情的情况下构造了网路请求,验证码会强制用户必须与应用进行交互,才能完成最终请求。 

        2、Referer Check 在HTTP头中有一个字段Referer,它记录了该HTTP请求的来源地址,通过Referer Check,可以检查请求是否来自合法的"源"。 

        3、添加token验证(token == 令牌) CSRF攻击之所以成功,是因为攻击者可以完全伪造用户的请求,抵御CSRF,关键在于请求中放入攻击者所不能伪造的信息,并且该信息不能存在于Cookie中。在HTTP请求头中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。