我尝试使用 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()); 后部署失败。这可能是因为政策文件的路径。
有人可以告诉我应该保留哪个政策文件吗?
答案 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文件。它解决了我的问题