zoukankan      html  css  js  c++  java
  • 整理 XSS与CSRF

    总结XSS与CSRF两种跨站攻击

    XSS:跨站脚本(Cross-site scripting)
    CSRF:跨站请求伪造(Cross-site request forgery)

    XSS:脚本中的不速之客

    XSS全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有JavaScript的内容文本。这时服务器端如果没有过滤或转移掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

    XSS防御手段

    原则: 不相信客户输入的数据
    注意: 攻击代码不一定在<script></script>中

    1. 将重要的cookie标记为http only,这样的话JavaScript中的document.cookie语句就不能获取到cookie了。
    2. 只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字。而数字之外的字符都过略掉。
    3. 对数据进行Html Encode处理
    4. 过滤或移除特殊的Html标签,例如:<script>,<iframe>,&it;for <, &gt;for>, &quot for
    5. 过滤JavaScript事件的标签。例如 onclick= , onfocus等等。

    CSRF:冒充用户之手

    CSRF,中文是跨站点请求伪造。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作,达到攻击目的。

    CSRF攻击的本质原因

    CSRF攻击是源于Web的隐式身份验证机制!Web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。CSRF攻击的一般是由服务端解决的。

    CSRF工具的防御手段

    1. 尽量使用POST,限制GET
      GET接口太容易被拿来做CSRF攻击,当然POST并不是万无一失,攻击者只要构建一个form就可以,但需要在第三方页面做,这样就增加暴露的可能性。

    2. 浏览器Cookie策略
      拦截第三方本地Cookie(Thired-party Cookie)的发生。

    3. 加验证码

    4. Referer Check

    5. Anti CSRF Token
      现在业界对CSRF的防御,一致的做法是使用一个Token(Anti CSRF Token)

    例子:

    1. 用户访问某个表单页面。
    2. 服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。
    3. 在页面表单附带上Token参数。
    4. 用户提交请求后,服务端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则非法请求。

    这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构建一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。

    注意:
    CSRF的Token仅仅用于对抗CSRF攻击。当网站同时存在XSS漏洞时候,那这个方案也是空谈。所以XSS带来的问题,应该使用XSS的防御方案予以解决。

  • 相关阅读:
    计算机网络知识总结-网络安全
    域名恶意指向的解决方法
    域名恶意解析的原因是什么
    域名被人恶意解析的解决方法
    防止域名被恶意解析
    公安部网防G01-网站安全卫士软件/linux防御
    详解web容器
    关于 服务器ip和域名进行一个绑定
    重新温习软件设计之路(2)
    重新温习软件设计之路(1)
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13719517.html
Copyright © 2011-2022 走看看