XSS防护,从根源来说是避免用户输入的代码在客户端执行,解决方式,可以从输入和输出入手。

关于XSS的详细信息可以参考 《白帽子讲WEB安全》——读书笔记 PART 1中的三、跨站脚本攻击(XSS)

第一种方式

自己实现输入过滤,输出编码(需要实现多个输出编码,比较麻烦,而且可能会漏)

第二种方式-基于ESAPI

下载esapi

ESAPI 下载选择esapi-2.1.0.1-dist.zip

导入jar包

  1. 解压后,将esapi-2.1.0.1.jar添加到buildpath
  2. esapi-2.1.0.1-dist\libs 目录下所有的jar添加到buildpath

配置文件

默认从esapi文件夹读取中配置文件,顺序:工程根目录->系统根目录->用户根目录,前两个测试无效,选择第三种

在当前用户的根目录下新建esapi文件夹,将esapi-2.1.0.1-dist\configuration\esapi 目录下的ESAPI.propertiesvalidation.properties 复制到新建的esapi文件夹

测试结果比较

测试采用的payload:

自己实现

结论:输出编码不完全,恶意代码还是可能被带到前端

基于ESAPI

结论:输出编码较为客观,建议采用

Demo

Leave a Reply

Your email address will not be published. Required fields are marked *