XSS的防御方法解析

XSS漏洞的总体防御原则: 输入做过滤,输出做转义

1、用户输入过滤

对用户输入的script等HTML标签和一些JS关键字进过滤。常见的过滤方法由白名单和黑名单两种。
其中Java的JSOUP采用了白名单的方式对用户的输入进行了过滤,在使用时需要指定一个可配置的Whitelist。在JSOUP中提供了一系列的Whitelist基本配置,能够满肚大多数的过滤要求,在有必要的情况下也可以自己配修改配置。
此外还有OWASP ESAPI也能较好的防御XSS漏洞。

2、转义输入与输出的特殊字符

在HTML中,<,>,",& 等符号都有其特殊意义,HTML标签、属性等也都由这些符号所标识。当我们这些字符做转义之后,对XSS漏洞的防御会起到较好的效果。
在PHP中,提供了htmlspecialchars()、htmlentites()函数可以把预定义的字符转义为HTML实体。
预定义的字符与转义结果如下:

  • &(和号)–> &amp;
  • "(双引号)–>&quot;
  • '(单引号)–>&#039;
  • <(小于)–>&lt;
  • 》>(大于)–>&gt;

3、使用HttpOnly

HttpOnly简介:
HttpOnly是微软公司的Internet Explorer 6 SPI 引入的一个新特性。这个特性为cookie提供了与i个新的属性,可以用于阻止用户客户端访问cookie。现在已经成为了一个标准,几乎所有的浏览器都支持HttpOnly。
所以严格来说,HttpOnly对防御XSS漏洞并不起作用,只能解决XSS漏洞后续的cookie劫持的问题。
将cookie设置了HttpOnly属性之后,在浏览器中查看cookie信息,就会发现用户的cookie信息中多了HTTP Only标识。这代表了JavaScript将不能获取该cookie值。
对于XSS漏洞来说,HttpOnly只能防御cookie会话劫持,对于其他的非正常操作、盗取用户信息、钓鱼等攻击并不能起到作用,所以关键还是在于输入输出的过滤与转义。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值