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

时间:2015-07-27 12:27:37

标签: java struts antisamy

我尝试使用 AntiSamy 来阻止我网站上的XSS攻击。我下载了以下罐子并将它们添加到" / 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的片段是

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.getInstance(url.getFile()); 后部署失败。这可能是因为政策文件的路径。

有人可以告诉我应该保留哪个政策文件吗?

1 个答案:

答案 0 :(得分:2)

each()部分失败,因为它无法找到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"); 以及其他jar文件。它解决了我的问题