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

Форум PHP

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

 

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

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

тема: 100% защита от XSS и SQL-injection
 
 автор: neudor   (24.04.2007 в 08:52)   письмо автору
 
 

Здравствуйте. Хотелось бы услышать ваши варианты о том, как наверняка обезопасить себя от подобного рода неприятностей (XSS и SQL).

Насчёт SQL, как мне кажется, достаточно будет заменить ', " и ` на &#39, &#34 и &#96 соответственно. Этим мы обеспечиваем невозможность выхода в тело запроса и добавление параметров. Ну и, естесственно, в самих запросах не забывать обрамлять параметры кавычками.
Этого будет достаточно или я что-то упустил?

XSS. Здесь всё намного запутаннее. Начиная от банального "<script>" и внедрения кода в тег img или url до использования строки с символами обрашёнными в hex. Строку такую браузер сначала дешифрует, и только потом исполняет. А вот фильтровать такую заразу довольно напряжно. Кроме того, есть ещё такая напасть как utf-7.
Есть у кого какие наработки, которыми не жалко поделиться?

Ещё в тему есть вопрос об исполнении php-сценариев в рисунках. Когда маленькая пикча открывается в блокноте и там ручками дописывается "<?php ...".Чтобы избежать подобных казусов, нужно просто не добавлять алиас на исполнение *.jpg через php.exe? Или что-то ещё?

И последний вопрос касается добавления в картинку JS кода. Где-то читал, что, например, через ACDSee в свойствах картинки в поле "описание" можно дописать JS, который прекрасно исполнится. Не экспериментировал, но возможность такая настораживает.

Ну и если ещё какие методы SQL и XSS забыл просьба напомнить и осветить методы борьбы.
Спасибо.

   
 
 автор: cheops   (24.04.2007 в 13:42)   письмо автору
 
   для: neudor   (24.04.2007 в 08:52)
 

>Насчёт SQL, как мне кажется, достаточно будет заменить ', " и ` на &#39, &#34 и &#96
>соответственно. Этим мы обеспечиваем невозможность выхода в тело запроса и добавление
>параметров. Ну и, естесственно, в самих запросах не забывать обрамлять параметры
>кавычками.
>Этого будет достаточно или я что-то упустил?
Нет этого не достаточно в общем случае, так как бывают SQL-инъекции без использования кавычек. Числовые значения следует проверять на предмет того, являются ли они числовыми. Тектовые значени лучше проверять при помощи конструкции
<?php
  
if (!get_magic_quotes_gpc())
  {
    
$text mysql_escape_string($text);
  }
?>


>XSS.
Достаточно пропускать весь текст, который вводит пользователь перед выводом через htmlspecialchars().

   
 
 автор: neudor   (24.04.2007 в 15:30)   письмо автору
 
   для: cheops   (24.04.2007 в 13:42)
 

а если я напишу
[URL=javascript:alert(document.cookie)]что-то интересное[/URL]
то здесь htmlspecialchars() не поможет.

Есть ли что понадёжнее чем сия функция?

   
 
 автор: malish   (24.04.2007 в 15:34)   письмо автору
 
   для: neudor   (24.04.2007 в 15:30)
 

ну дык на скока я понимаю при таком вводе ничего и не произойдет так как не указаны тэги <script> и </script>...

   
 
 автор: neudor   (24.04.2007 в 16:00)   письмо автору
 
   для: malish   (24.04.2007 в 15:34)
 

а вы попробуйте создать документ с содержанием
<a href="javascript:alert('1')">111</a>
и кликните по ссылке.

   
 
 автор: malish   (24.04.2007 в 16:02)   письмо автору
 
   для: neudor   (24.04.2007 в 16:00)
 

ну так после того как вы обработаете данные функцией htmlspecialchars() все тэги будут эранированы и данный код не сработает..

htmlspecialchars() экранирует все тэги.. а без тэгов <script> функции javascript выполнятся не будут

   
 
 автор: cheops   (25.04.2007 в 01:04)   письмо автору
 
   для: neudor   (24.04.2007 в 16:00)
 

У функции htmlspecialchars() имеется второй параметр, который позволяет переводить кавычки в HTML-форму - без кавычек вредоносный скрипт очень сложно будет создать.

   
 
 автор: Loki   (24.04.2007 в 17:42)   письмо автору
 
   для: neudor   (24.04.2007 в 15:30)
 

если вы это напишете, то ничего не произойдет. А вот если вы накосячите с этой строкой в процессе отображения, то может и произойти.
но ваши косяки к функции htmlspecialchars() не имеют ни малейшего отношения

   
 
 автор: neudor   (25.04.2007 в 13:17)   письмо автору
 
   для: Loki   (24.04.2007 в 17:42)
 

простите великодушно.
ковырял форум на предмет xss. не сумел.

просьба к модераторам удалить сообщение.

   
Rambler's Top100
вверх

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