AntiSamy 策略文件在 Web 项目中的位置

Posted

技术标签:

【中文标题】AntiSamy 策略文件在 Web 项目中的位置【英文标题】:Location of AntiSamy policy file in web project 【发布时间】:2015-07-27 12:27:37 【问题描述】:

我正在尝试使用 AntiSamy 来防止对我的网站进行 XSS 攻击。我下载了以下jar并将它们添加到“/WEB-INF/lib”

antisamy-1.5.3.jar

nekohtml.jar

xercesImpl-2.5.0.jar

以及“/WEB-INF”中的策略文件 antisamy-slashdot-1.4.4.xml

我尝试通过 web.xml 实现过滤器。我正在使用的 servlet 的 sn-p 是

public class AntiSamyFilter implements Filter 

private static final Logger LOG = Logger.getLogger(AntiSamyFilter.class);

private final AntiSamy antiSamy;

public AntiSamyFilter() 
    try 
        URL url = this.getClass().getClassLoader().getResource("antisamy-slashdot-1.4.4.xml");
        LOG.info("After getResource");
        Policy policy = Policy.getInstance(url.getFile()); //Deployment fails
        LOG.info("After Policy");
        antiSamy = new AntiSamy(policy);
        LOG.info("After antiSamy");
     catch (PolicyException e) 
        throw new IllegalStateException(e.getMessage(), e);
    


Policy policy = Policy.getInstance(url.getFile()); 后部署失败。这可能是因为策略文件的路径。

谁能告诉我政策文件应该保存在哪里?

【问题讨论】:

【参考方案1】:

url.getFile 部分失败,因为它找不到 antisamy-slashdot-1.4.4.xml 文件。我在src/my/package 中创建了一个包并进行了更改

URL url = this.getClass().getClassLoader().getResource("antisamy-slashdot-1.4.4.xml");

URL url = this.getClass().getClassLoader().getResource("/my/package/antisamy-slashdot-1.4.4.xml");

我还添加了 batik.jar 以及其他 jar 文件。它解决了我的问题

【讨论】:

以上是关于AntiSamy 策略文件在 Web 项目中的位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tomcat 将文本文件放在 Eclipse 动态 Web 项目中的啥位置?

Web安全头号大敌XSS漏洞解决最佳实践

antisamy 解析器强制关闭标签

Tomcat中的Web.xml和servlet.xml的学习

Java:Owasp AntiSamy 与 Owasp-java-html-sanitize

VS2012中的解决方案与项目文件不在同一个位置,如何解决啊