2013-07-31 3 views
0

Я смог предотвратить атаку XSS в struts 1.2 с помощью комбинации filter = "true" в bean-компоненте: писать сообщения и с помощью StringEscapeUtils.escapeHtml4 (string) в теге libs, который я использую. Однако я могу атаковать мой сайт с помощью атаки по URL-адресу в следующей форме:Struts XSS Prevention - Предотвращение GET XSS

www.mysite.com/App/Start.do?logo=mylogo'><script>alert("ATTACK")</script> 

Любые советы по наилучшему способу предотвращения этого. Я попытался использовать фильтр сервлета, но я не хочу преобразовывать все запросы в специальные символы.

ответ

1

Самый простой способ я нашел, чтобы блокировать XSS заменяет все >, < и " символы с &lt;, &gt; и &quot; перед записью на веб-странице. Это должно защитить вас от XSS до тех пор, пока вы не размещаете вход пользователя внутри таких мест, как теги сценариев, теги изображений (XSS был возможен из src = тегов изображений) и т. Д., Поскольку они не смогут создавать свои собственные теги.

В PHP вы должны сделать это с помощью метода htmlSpecialChars, который кодирует все символы, подобные этому. Однако Java не имеет этого метода, поэтому самый быстрый способ - просто заменить его, вы должны действительно пройти весь список самостоятельно. Не должно быть слишком трудно реализовать 5 replaceAll()


docs для метода StringEscapeUtils ваши требования, используя для выполнения того, что я предлагаю выше, так что вы должны проверить, что вы используете метод правильно, как ваш пример не должен выжить эта форма профилактики.

+0

Спасибо за ответ, я говорю конкретно о URL-адресе, хотя, чтобы пользователь не ударил вышеуказанный URL-адрес. ИЛИ перехватывать все запросы GET и очищать их –

+0

Почему имеет значение, если URL-адрес содержит XSS, URL-адрес не обрабатывается как HTML. Таким образом, это не повлияет на ваш сайт. Это чисто эстетическая проблема? – Robadob

+0

Я могу вставить javascript в URL-адрес, который будет выполняться после нажатия URL-адреса. –