1

我正在尝试使用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 的一个片段是

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

有人可以告诉我政策文件应该保存在哪里吗?

4

1 回答 1

2

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 文件。它解决了我的问题

于 2015-07-28T09:23:06.363 回答