На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
Re: Пользовательские данные, защита от javascript
От:
Аноним
Дата:
22.09.09 12:38
Оценка:
Здравствуйте, Аноним, Вы писали:
А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
<script language="javascript">
alert( 'Тест РСДН на JavaScript injection!' );
</script>
Здравствуйте, Аноним, Вы писали:
А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
Обычно в веб-языках есть функцию позволяющие конвертировать символы типа <, > и т.д. в соответствующие html-сущности.
К примеру, в PHP — можно воспользоваться функциями strip_tags()/htmlentities()/htmlspecialchars(). Обрабатывать вводимые пользователем данные можно либо до сохранения в БД, либо непосредственно перед выводом на экран, в зависимости от ситуации. Правда если обрабатывать перед выводом на экран, есть вероятность когда-нибудь прочитать их из БД и вывести на экран, забыв обработать, это надо учитывать.
По поводу вставки javascript, можно к примеру заменять вхождения "javascript:" (в любом регистре) на что-то другое.
Но вообще лучше поискать и почитать разные статьи в инете на эту тему, т.к. тут немало особенностей (к примеру можно еще vbscript: вставить, а не только javascript и т.д.).
Re[2]: Пользовательские данные, защита от javascript
Re[2]: Пользовательские данные, защита от javascript
От:
Аноним
Дата:
22.09.09 14:49
Оценка:
Здравствуйте, MozgC, Вы писали:
MC>Здравствуйте, Аноним, Вы писали:
А>>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
MC>Обычно в веб-языках есть функцию позволяющие конвертировать символы типа <, > и т.д. в соответствующие html-сущности. MC>К примеру, в PHP — можно воспользоваться функциями strip_tags()/htmlentities()/htmlspecialchars().
А что есть готовое для таких случаев в Perl?
Re[3]: Пользовательские данные, защита от javascript
А>А что есть готовое для таких случаев в Perl?
Самое простое — заменить все символы < и > на < и > соответственно. Все скрипты, теги и прочее — мимо кассы. Кстати, это еще и правильно с точки зрения html.
Здравствуйте, Аноним, Вы писали:
А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
Перестать собирать HTML из кусочков строк, генерировать DOM и сериализовать его в XHTML :P
Ну или замена & на &, < на <, > на >, " на ". Но на этом пути ждут засады с кодировками: если в форму вводят символ, не представимый в кодировке формы, то браузер, скорее всего, передаст его в виде &#xxxx;, что после эскейпинга превратится в &#xxxx;, а пользователь увидит обратно &#xxxx;. Поэтому все формы должны отдаваться в UTF-8. (И вообще весь сайт, принимающий пользовательский ввод, должен работать в UTF-8, включая базу данных.)