XSS、CSRF攻击与防范

1、XSS攻击浏览器

  XSS攻击全称跨站脚本攻击,是指经过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者 JavaScript 进行一种攻击。攻击者编写脚本设下陷阱,用户在本身的浏览器上运行时,一不当心就会受到被动攻击。安全

  例子:若是A用户评论 [hello world] 提交到服务器,B用户看到这条评论的时候一切正常。但若是C用户评论 [<script>console.log(document.cookie)</script>],那么当B用户访问这条评论所在的界面是,这串js代码就会在B用户的浏览器执行,输出cookie的值。这样就构成了XSS攻击。服务器

  防范:cookie

                1)使用 XSS Filter并发

      针对用户提交的数据,只接受规定的长度或内容的提交,过滤掉其余的输入类型。例如表单提交年龄只接受 int 类型,过滤掉特殊的HTML标签<script>等,过滤 JS 事件例如 onclick, onfocus等。网站

     2)对HTML标签插入的不可信数据进行 HTML Entity 编码。编码

       

 

 

       3)JavaScript 编码 将 \ 转成 \\,将/ 专程/\,将半角符号转成全角符号  spa

       4)HTTP Only Cookie 许多XSS攻击是为了获得用户的cookie信息,将重要的cookie信息标记为 http only,这样的话当浏览器想服务器端发起请求时就会带上cookie,可是在脚本中却不能访问cookie信息,避免了XSS攻击利用js代码document.cookie获取cookie信息。blog

 

 

 

2、CSRF攻击token

  CSRF全称跨站请求伪造,能够理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求。

  原理:

    • 用户C打开访问受信任网站A,输入用户名和密码请求登录网站A
    • 在用户信息经过验证后,网站A产生cookie信息并返回给浏览器,此时用户登录网站A成功,并能够正常发送请求到网站A。
    • 用户在未退出网站A以前,在同一浏览器中,打开了一个TAB页访问网站B
    • 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
    • 浏览器咋接收到这些攻击性代码后,根据网站B的请求,在用户不知情的状况下携带Cookie信息向网站A发出请求,网站A并不知道该请求由B发起,因此会根据用户C的权限处理该请求,致使来自网站B的而已代码被执行。

 

  防范:

    • 验证 HTTP Referer 字段
    • 请求地址中添加token并验证
    • 使用验证码