Пользовательские данные, защита от javascript
От: Аноним  
Дата: 22.09.09 12:21
Оценка:
На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?
Re: Пользовательские данные, защита от javascript
От: Аноним  
Дата: 22.09.09 12:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?



<script language="javascript">
alert( 'Тест РСДН на JavaScript injection!' );
</script>
Re: Пользовательские данные, защита от javascript
От: MozgC США http://nightcoder.livejournal.com
Дата: 22.09.09 12:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?


Обычно в веб-языках есть функцию позволяющие конвертировать символы типа <, > и т.д. в соответствующие html-сущности.
К примеру, в PHP — можно воспользоваться функциями strip_tags()/htmlentities()/htmlspecialchars(). Обрабатывать вводимые пользователем данные можно либо до сохранения в БД, либо непосредственно перед выводом на экран, в зависимости от ситуации. Правда если обрабатывать перед выводом на экран, есть вероятность когда-нибудь прочитать их из БД и вывести на экран, забыв обработать, это надо учитывать.
По поводу вставки javascript, можно к примеру заменять вхождения "javascript:" (в любом регистре) на что-то другое.
Но вообще лучше поискать и почитать разные статьи в инете на эту тему, т.к. тут немало особенностей (к примеру можно еще vbscript: вставить, а не только javascript и т.д.).
Re[2]: Пользовательские данные, защита от javascript
От: piksel Россия  
Дата: 22.09.09 14:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А><script language="javascript">

А> alert( 'Тест РСДН на JavaScript injection!' );
А></script>

&lt;script language="javascript"&gt;<br />
alert( 'Тест РСДН на JavaScript injection!' );<br />
&lt;/script&gt;
Re[2]: Пользовательские данные, защита от javascript
От: Аноним  
Дата: 22.09.09 14:49
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>Здравствуйте, Аноним, Вы писали:


А>>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?


MC>Обычно в веб-языках есть функцию позволяющие конвертировать символы типа <, > и т.д. в соответствующие html-сущности.

MC>К примеру, в PHP — можно воспользоваться функциями strip_tags()/htmlentities()/htmlspecialchars().

А что есть готовое для таких случаев в Perl?
Re[3]: Пользовательские данные, защита от javascript
От: Vamp Россия  
Дата: 22.09.09 15:00
Оценка:
А>А что есть готовое для таких случаев в Perl?
Самое простое — заменить все символы < и > на &lt; и &gt; соответственно. Все скрипты, теги и прочее — мимо кассы. Кстати, это еще и правильно с точки зрения html.
Да здравствует мыло душистое и веревка пушистая.
Re: Пользовательские данные, защита от javascript
От: Centaur Россия  
Дата: 23.09.09 05:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>На сайте предусмотрена возможность добавлять пользовательские комментарии, которые, естественно, хранятся в базе. Как защититься от javascript в тексте комментария?


Перестать собирать HTML из кусочков строк, генерировать DOM и сериализовать его в XHTML :P

Ну или замена & на &amp;, < на &lt;, > на &gt;, " на &quot;. Но на этом пути ждут засады с кодировками: если в форму вводят символ, не представимый в кодировке формы, то браузер, скорее всего, передаст его в виде &#xxxx;, что после эскейпинга превратится в &amp;#xxxx;, а пользователь увидит обратно &#xxxx;. Поэтому все формы должны отдаваться в UTF-8. (И вообще весь сайт, принимающий пользовательский ввод, должен работать в UTF-8, включая базу данных.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.