![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Добрый день.
У меня возник вопрос по безопасности, относительно XSS (http://en.wikipedia.org/wiki/Cross-site_scripting) Насколько я понял, суть такого взлома в том что внутрь переменных, полученных со стороны пользователя, кладутся специальным образм составленный строки, которые при интерпритации на стороне сервера позволяют выполнить вредоносный код. Коротко, суть проблемы в том, что разработчик просто забывает включать фильтрацию на различные вводимые символы, такие, например, как: скобки(< , >), кавычки(“ ‘), слеши(/ , \), и т.д. Очевидно что для борьбы с этим типом атак необходимо проверять корректность получаемых данных со стороны пользователя. Вопрос: достаточно ли для защиты от XSS просто фильтровать все данные полученые со стороны пользователя? Например путём проверки что полученное выражение удовлетворяет соответствующему регулярному выражению? (очевидно что переменная "имя_пользователя" не может содержать слеши и кавычки, и вообще всегда состоит только из букв и пробелов). Или есть ещё какие-то нюансы которые стоит рассмотреть, и одной фильтрацией тут не обойтись? Это сообщение отредактировал(а) Fieral - 7.5.2010, 16:52 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Fieral, не совсем: XSS - подстановка таких данных, которые, будучи обработаны на сервере и затем выведены в браузере, могут привести к исполнению в нем незапланированного JS-кода. Например, через форму HTML-комментариев нехороший человек может подсунуть ссылку с javascript:-протоколом, отсылающую AJAX-запросом на левый сервер все куки и т.п. того, кто по ней кликнет. Или при подстановке значения в <input value="..."> подсунуть что-то 'гыгы" onclick="doSmethingBad()"' - кавычка закончит value, и остальное превратится в новый, явно нежелательный, атрибут инпута. Поэтому для защиты от XSS надо не тупо фильтровать ввод, а с умом планировать вывод. Самый простой способ - заменять спецсимволы HTML (<, >, ", &) на соотв. сущности (<, >, ", &) (в серверных языках обычно для этого есть готовые средства, типа htmlspecialchars в PHP). Тогда, что бы не ввел вредный юзер, оно отобразится как текст, но не выполнится как HTML. Для значений инпутов этого достаточно, а вот для тех же HTML-комментариев надо уже фильтровать разметку, оставляя только допустимые теги и атрибуты...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |