安全类

安全类

一、CSRF(Cross-site request forgery)

  • 定义:跨站请求伪造
  • 防御
    1. 在请求地址中添加 token 并验证
    2. 验证 HTTP Referer 字段(请求从哪来的,是否匹配,不匹配就不响应)
    3. 隐藏令牌(在http请求头上添加属性,例如添加csrftoken)

二、XSS(Cross Site Scripting,为了和css区分,故称XSS)

  1. 定义:跨站脚本攻击

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

  1. 防御
    理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script。防御 XSS 攻击最简单直接的方法,就是过滤用户的输入。
    如果不需要用户输入 HTML,可以直接对用户的输入进行 HTML escape 。下面一小段脚本:
    <script>window.location.href=”http://www.baidu.com”;</script>

经过 escape 之后就成了:

    &lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;

它现在会像普通文本一样显示出来,变得无毒无害,不能执行了。

当我们需要用户输入 HTML 的时候,需要对用户输入的内容做更加小心细致的处理。仅仅粗暴地去掉 script 标签是没有用的,任何一个合法 HTML 标签都可以添加 onclick 一类的事件属性来执行 JavaScript。更好的方法可能是,将用户的输入使用 HTML 解析库进行解析,获取其中的数据。然后根据用户原有的标签属性,重新构建 HTML 元素树。构建的过程中,所有的标签、属性都只从白名单中拿取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容