Расположение файла политики AntiSamy в веб-проекте
Я пытаюсь использовать AntiSamy для предотвращения XSS-атак на мой сайт. Я скачал следующие jar-файлы и добавил их в "/ WEB-INF / lib"
antisamy-1.5.3.jar
nekohtml.jar
xercesImpl-2.5.0.jar
вместе с файлом политики antisamy-slashdot-1.4.4.xml в "/WEB-INF".
Я пытался реализовать фильтр через web.xml. Фрагмент сервлета, который я использую,
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. Это решило мою проблему