На сайте есть редактор статей, он генерирует HTML код в зависимости от свойств текста. Его я отправляю на сервер, и чтобы снова вывести на странице просмотра данной статьи приходится отключать замену тегов HTML спецсимволам, т.е:
<h:outputText escape='false' content=${post.content}'/>
Но в таком случае, как я понимаю появляется уязвимость к XSS атакам, поэтому прежде чем загрузить, написанный контент в бд, я должен проверить на наличие script'ов внутри статьи, делаю это следующим образом:
public String replaceScript(String html){
if(html == null || html.length() < 7){
return html;
}
final String PATTERN_STRING = "<[. | \\n]*?script[. | \\n]*?>";
final String replace1 = "<"; // <
final String replace2 = ">"; // >
Pattern pattern = Pattern.compile(PATTERN_STRING);
Matcher matcher = pattern.matcher(html.trim());
StringBuilder builder = new StringBuilder(html);
while(matcher.find()){
int start = matcher.start(), end = matcher.end();
builder.replace(start , start, replace1);
builder.replace(end + replace1.length(), end + replace1.length(), replace2 );
}
return builder.toString();
}
Всё ли я правильно сделал, или угроза XSS все равно остаётся?
Это только предохраняет от вставки тэгов <script>
, но угроза все равно остается, поскольку некоторые значения могут содержать javascript инектированный код. Чтобы такого не происходило нужно инкодить значения переменных при выводе в JSP.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
возникла необходимость удалять строки в бд по условию, проблема в том что когда sql запрос выполняется успешно, но количество затрагиваемых...
Вопрос с собеседования:"нужно реализовать свои Put() и getByKey, для хеш-мапы" Может кто-то подсказать, как это можно сделать?
помогите пожалуйста выровнить сетку товаров в woocommerceВот здесь видно что не ровно отображаются товары из-за длинного названия