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

Форум PHP

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

 

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

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

тема: Как фильтровать данные $_POST на возможные уязвимости (sql иньекции)
 
 автор: torxxx   (06.10.2011 в 13:38)   письмо автору
 
 

Подскажите пожалуйста какие есть способы

  Ответить  
 
 автор: cheops   (06.10.2011 в 13:48)   письмо автору
 
   для: torxxx   (06.10.2011 в 13:38)
 

Есть два вида SQL-инъекций - один эксплуатирует вставку чисел, добавляя последовательность вида "0 OR 1 = 1", другой - вставку строк, добавляя лишние кавычки. С первым видом SQL-инъекций борятся при помощи явного приведения к числам, например
<?php
  $_POST
['id'] = intval($_POST['id']);
?>

Со вторым типом атаки борятся при помощи экранирования кавычек, например, при помощи функции mysql_escape_string(). Тут правда, есть тонкость, если включен режим "магических кавычек" сервер будет осуществлять экрнирование автоматически, поэтому при помощи mysql_escape_string() можно надобавлять лишних слешей в текст. Поэтому функцию mysql_escape_string(), как правило, используют совместно с get_magic_quotes_gpc().
<?php
  
if (!get_magic_quotes_gpc()) 
  { 
    
$_POST['text'] = mysql_escape_string($_POST['text']); 
  }
?>
У последнего метода имеются вариации, можно наоборот удалять экранирование магических кавычек при помощи stripslash(), а потом экранировать все данные при помощи get_magic_quotes_gpc().

  Ответить  
 
 автор: torxxx   (06.10.2011 в 14:25)   письмо автору
 
   для: cheops   (06.10.2011 в 13:48)
 

спасибо

  Ответить  
 
 автор: torxxx   (06.10.2011 в 18:57)   письмо автору
 
   для: cheops   (06.10.2011 в 13:48)
 


<input name='title' type='hidden' value='$переменная1' />
<input name='submit' type='submit' value='отправить' ' />


А как защитить эти данные: интересует $переменная1 - внутри ее текст (необходим для обработки)

  Ответить  
 
 автор: cheops   (06.10.2011 в 19:00)   письмо автору
 
   для: torxxx   (06.10.2011 в 18:57)
 

Имеется в виду при выводе вводимых пользователем переменных (защита от XSS-инъекции)? Здесь лучше всего воспользоваться функцией htmlspecialchars()
<input name='title' type='hidden' value='<?php echo htmlspecialchars($переменная1); ?>' /> 
<input name='submit' type='submit' value='отправить' />

  Ответить  
 
 автор: torxxx   (06.10.2011 в 19:08)   письмо автору
 
   для: cheops   (06.10.2011 в 19:00)
 

да пользователем (сделал спасибо еще раз)

  Ответить  
Rambler's Top100
вверх

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