Расположение файла политики 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. Это решило мою проблему

Другие вопросы по тегам