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

标签 java struts antisamy

我正在尝试使用 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());之后部署失败。可能是策略文件路径的问题。

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

最佳答案

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

关于java - AntiSamy 策略文件在 Web 项目中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653108/

相关文章:

java - 如何在依赖 JavaScript 的 Struts 表单中处理换行符

java.lang.IllegalStateException : getAttributeNames: Session already invalidated

JavaScript : How to prevent user from entering = in textbox?

java - 如何在Java中使用大双数?

Java 并发和多线程

java - 仅在 Struts 1.x 中将 HTTP 请求限制为 'POST'

java - antisamy 解析器强制关闭标记

java - AntiSamy 可以防止 Java 中的 XSS?

java - Jackson 对象映射器如何忽略 JsonProperty 注释?

java - 有没有办法在 Java 中验证内存中的 XML DOM 树?