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

Форум PHP

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

 

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

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

тема: XSS атака
 
 автор: Ressfourt   (21.09.2006 в 21:25)   письмо автору
 
 

вопрос такого плана

возможно ли с помощью визуальных редакторов типо FCKeditor или TinyMCE повесить эксплоит?

и вообще как происходит XSS атака?

если можно по подробней

   
 
 автор: cheops   (21.09.2006 в 21:48)   письмо автору
 
   для: Ressfourt   (21.09.2006 в 21:25)
 

XSS-атака, это вставка JavaScript или HTML-кода между другим кодом. Например если бы на форуме, не произовдилась обработка текста сообщений при помощи функции htmlspecialchars(), любой, кто запостил бы редирект
<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=http://www.mysite.ru'>
</HEAD></HTML>

мог бы переправлять посетителей на свой сайт, а если в GET-параметре он ещё и cookie пересылал бы, то была бы возможность собирать пароли посетителей. В общем XSS-атака, это когда злоумышленик имеет возможность выполнять JavaScript или HTML-код на сайте не имея возможности для прямого редактирования HTML-кода.

   
 
 автор: Ressfourt   (21.09.2006 в 21:50)   письмо автору
 
   для: cheops   (21.09.2006 в 21:48)
 

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

   
 
 автор: cheops   (21.09.2006 в 21:54)   письмо автору
 
   для: Ressfourt   (21.09.2006 в 21:50)
 

Нет, если пользователь сам себя редиректит куда-то - ничего страшного, страшно, когда текст с XSS-вставкой выводится на всеобщее обозрение. Чтобы предотвратить выполнение XSS-атаки, достаточно весь текст, который выводится из базы данных, файлов и которые вводят посетители перед выводом на страницы сайта пропускать через функцию htmlspecialchars().
<?php
  
echo htmlspecialchars($text);
?>

   
 
 автор: Ressfourt   (21.09.2006 в 22:25)   письмо автору
 
   для: cheops   (21.09.2006 в 21:54)
 

весь текст который вводят пользователи идет через визуальный редактор FCKeditor после я его перевожу в формат ASCII ну и естественно заношу в БД а оттуда вывожу

   
 
 автор: indexer   (21.09.2006 в 22:30)   письмо автору
 
   для: Ressfourt   (21.09.2006 в 22:25)
 

Хм. а еще можно вырезать все теги функцией strip_tags и заставить пользоватся BBCod ом
и еще удалять некоторые опасные символы кавычки например что бы sql injection не смог пролезть, и при записи в базу использовать функцию mysql_escape_string

от sql injection лучше юзать placeholder-ы
НЕ ТАК
sql=("SELECT * FROM tadle WHERE a='$a' AND b='$b'");//код изначально дырявый
а вот так
sql=('SELECT * FROM table WHERE a=? AND b=?', $a, $b);//вопросы это и есть placeholder

защита организована на уровне базы

   
 
 автор: Ressfourt   (21.09.2006 в 22:32)   письмо автору
 
   для: indexer   (21.09.2006 в 22:30)
 

Многим уже настолько надоели эти ББ коды уххх... поэтому я и ввел Виз. Редактор ... доволно просто и удобно и народ будет доволен


правда есть одно но при выводе из базы данных на сайт я использую функцию html_entity_decode для отображения

   
 
 автор: indexer   (22.09.2006 в 00:18)   письмо автору
 
   для: Ressfourt   (21.09.2006 в 22:32)
 

Хм WYSIWYG ов много понаписано ну а как пользователь будет постить если у него например OPERA7.00 или 7.5 JavaScript WYSIWYGа она не сможет поддержать, что уж там говорить о комуникаторах и мобилах. И что в таких случаях выводить? Извините вы не можете? А некоторые специально отключают java, Flash всплывающие окна (у меня например даже картинки отключены)
И подключить его бывает достаточно сложно например в шаблонизатор SMARTY придется практически весь код либо подключать отдельным файлом либо переписывать под теги smarty.

Так что использование его окутано мраком и не всегда себя оправдывает, это лично мое мнение.
уж лучше я пока по старинке BBкодом. Потому как универсально.

   
 
 автор: Loki   (22.09.2006 в 11:05)   письмо автору
 
   для: indexer   (21.09.2006 в 22:30)
 

strip_tags - довольно глючная штука. Я бы не рекомендовал ее использовать без особой на то необходимости:
<?
$test
="А все потому что 2<3 вот так!";
echo 
strip_tags($test); // выведет "А все потому что 2"
?>

   
 
 автор: cheops   (22.09.2006 в 12:14)   письмо автору
 
   для: Ressfourt   (21.09.2006 в 22:25)
 

>весь текст который вводят пользователи идет через визуальный редактор FCKeditor после я его
>перевожу в формат ASCII ну и естественно заношу в БД а оттуда вывожу
Непосредственно перед выводом следует использовать htmlspecialchars().

   
 
 автор: Ressfourt   (22.09.2006 в 19:23)   письмо автору
 
   для: cheops   (22.09.2006 в 12:14)
 

да но если использовать htmlspecialchars() перед выводом тогда теряется смысл использования Визуально редактора так как функция все тэги преобразует в ASCII

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

   
 
 автор: cheops   (22.09.2006 в 20:44)   письмо автору
 
   для: Ressfourt   (22.09.2006 в 19:23)
 

Тогда можно действительно использовать функцию strig_tags() - она позволяет явно указать тэги, которые не нужно удалять.

   
 
 автор: Ressfourt   (23.09.2006 в 12:48)   письмо автору
 
   для: cheops   (22.09.2006 в 20:44)
 

Спасибо всем я нашел решение как хотябы на 50% не допустить эксплоит

HTML_SAFE в pear.php.net

   
Rambler's Top100
вверх

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