Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как разрешить html, но безопасно?
 
 автор: Proger   (29.07.2007 в 00:34)   письмо автору
 
 

Здраствуйте гуру =) Доброй ночи.
Вопрос таков: у меня есть служба блогов, так вот тут решил в неё вшить html редактор, отсюда вопрос, как его разрешить, чтобы угрозы безопасности не было? Отрезать <script>? Ещё что? Редактор tine_mce - как ворд, то есть теги, спец.символы и прочая ерунда - жду ответа!
Спасибо заранее!

   
 
 автор: testdriver   (29.07.2007 в 01:54)   письмо автору
 
   для: Proger   (29.07.2007 в 00:34)
 

Можно, например для верности добавить в начало страницы тег <noscript> чтобы запретить выполнение скриптов на всей странице. А в переданных данных отфильтровать тег </noscript>
А использовать этот тег (<noscript>) для того, чтобы не вставили JS код в обработчики событий на странице. Хоте если очень хочеться их тоже можно повырезать с помощью PHP.
Пока все, других конструктивных предложений на данный момент не имею :)

   
 
 автор: Proger   (29.07.2007 в 13:08)   письмо автору
 
   для: testdriver   (29.07.2007 в 01:54)
 

Что-то и не верится что это безопасно... А всякие там кавычки? Спец. знаки? Как с ними быть?

   
 
 автор: Unkind   (29.07.2007 в 14:10)   письмо автору
 
   для: testdriver   (29.07.2007 в 01:54)
 

Можно, например для верности добавить в начало страницы тег <noscript> чтобы запретить выполнение скриптов на всей странице.
<noscript> нужен для тех браузеров, где JavaScript не поддерживается.

   
 
 автор: Proger   (29.07.2007 в 14:12)   письмо автору
 
   для: Unkind   (29.07.2007 в 14:10)
 

Вот вот, то что между данными тегами же вроде показывается как раз когда яваскрипт вырублен или не поддерживается типа:


страница
<script>
.....
</script>
<noscript>
Чтобы посмотреть страницу нужно JS 300000000 =)
</noscript>

   
 
 автор: testdriver   (29.07.2007 в 16:19)   письмо автору
 
   для: Unkind   (29.07.2007 в 14:10)
 


<html>
<noscript> // ставим этот тег
<head>
<script>
alert('Hello!!!'); // выводим сообщение
</script>
</head>
<body onLoad="document.location='mysite.ru'"> // пытаемся перекинуть страницу на другой URL
</body>
</html>


Unkind что то не пойму к чему вы это? т.е. хотите сказать что этот не помешает выполнить JS код в IE6, Opera или NS ?! ... тогда попробуйте

   
 
 автор: Unkind   (29.07.2007 в 17:19)   письмо автору
 
   для: testdriver   (29.07.2007 в 16:19)
 

Даже пробовать не буду. Сделайте по правилам HTML раставление тегов - тогда попробую.

   
 
 автор: testdriver   (29.07.2007 в 17:30)   письмо автору
 
   для: Unkind   (29.07.2007 в 17:19)
 

как же иногда бывает приятно поумничать, понимаю :) ... но дело ваше, мне мягко сказать все равно ...

   
 
 автор: Unkind   (29.07.2007 в 17:36)   письмо автору
 
   для: testdriver   (29.07.2007 в 17:30)
 

Нет, почему сразу умничать. Не переношу код, когда там даже не закрывают парный тег. Да еще и пихают до <head>. Тут говорить о реакции браузера трудно.

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

http://www.w3.org/TR/html4/interact/scripts.html 18.3.1

   
 
 автор: testdriver   (29.07.2007 в 17:58)   письмо автору
 
   для: Unkind   (29.07.2007 в 17:36)
 

да все таки лучше от этого отказаться :) решение все же было поспешным ...
Тогда другое предложение в тему, вырезать кроме <script></script> еще и теги слоев, чтоб не загружали в страницу, другие страницы из других источников.

   
 
 автор: Kusuk   (29.07.2007 в 13:19)   письмо автору
 
   для: Proger   (29.07.2007 в 00:34)
 

htmlspecialchars
?!?

   
 
 автор: Proger   (29.07.2007 в 13:48)   письмо автору
 
   для: Kusuk   (29.07.2007 в 13:19)
 

Это ЗАПРЕЩАЕТ HTML делая < > и пр. текстом! Браузер такой html не обработает! =) А надо чтобы пользователь фактически мог воять свой сайт, просто чтобы это было для меня безопасно, вот накидал код:


function clear_value($val) {

  if ($val == '') { return '';  }
  $val = preg_replace( "/<script/i"  , '&#60;script'   , $val );
}


Только вот не датумкал, как сделать чтобы вырезало теги script и все содержимое между ними...

   
 
 автор: Trianon   (29.07.2007 в 14:34)   письмо автору
 
   для: Proger   (29.07.2007 в 13:48)
 

js-код может появляться не только между тегами <script> но и внутри множества тегов, напрямую связанных с Document Object Model , к примеру, - в атрибутах onClick, onSumit, onChange. Короче, убивать только один тег - не выход.

Если Вы и вправду хотите безопасности - давать посетителю напрямую создавать html - нельзя.

   
 
 автор: Proger   (29.07.2007 в 15:09)   письмо автору
 
   для: Trianon   (29.07.2007 в 14:34)
 

=(((( Ну народ.ру же даёт, может и я смогу? ;) Главное это нужно знать чего отрезать! Или просто сделать список доступных тегов? А все остальное нафиг? Сделать например теги только с заданными атрибутами? Совсем никак что ли? Просто редактор html мне никак не получилось под BB коды заточить =( А код 200 кб, врятли думаю кто-нить мне будет его редактировать!

   
 
 автор: JIEXA   (29.07.2007 в 19:35)   письмо автору
 
   для: Proger   (29.07.2007 в 15:09)
 

Сам недавно парился по этому поводу, вот готовая библеотека.

   
 
 автор: Proger   (29.07.2007 в 23:38)   письмо автору
 
   для: JIEXA   (29.07.2007 в 19:35)
 

Очень интерестно, понять бы как использовать и было бы супер! Спасибо, посмотрю!

   
 
 автор: Proger   (23.08.2007 в 21:13)   письмо автору
 
   для: Proger   (29.07.2007 в 23:38)
 

Хм...так и не понял, неподскажите как её использовать? Я просто с классами не очень то орудую!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования