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

Форум PHP

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

 

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

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

тема: Обработка POST-данных функцией mysql_real_escape_string()
 
 автор: ladan   (05.01.2012 в 22:27)   письмо автору
 
 

Имеет ли смысл обрабатывать переменные функцией mysql_real_escape_string, если данные передаются методом POST? Есть несколько файлов с работой БД- добавление, редактирование, удаление из бд и все данные летят через post

  Ответить  
 
 автор: cheops   (05.01.2012 в 22:30)   письмо автору
 
   для: ladan   (05.01.2012 в 22:27)
 

А чем вызваны сомнения? Да, если данные вставляются в базу данных в виде строки, они обязательно должны быть обработаны. Подделать POST-данные лишь чуть-чуть сложнее, чем GET-данные, злоумышленника это не остановит.

  Ответить  
 
 автор: ladan   (05.01.2012 в 22:33)   письмо автору
 
   для: cheops   (05.01.2012 в 22:30)
 

ясно спасибо! пойду обрабатывать :)

  Ответить  
 
 автор: ladan   (05.01.2012 в 23:35)   письмо автору
 
   для: cheops   (05.01.2012 в 22:30)
 

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

  Ответить  
 
 автор: cheops   (05.01.2012 в 23:40)   письмо автору
 
   для: ladan   (05.01.2012 в 23:35)
 

Обрабатывать нужно все, так, чтобы вставка данных в запрос не приводила к ошибке на стороне MySQL-сервера. Все запросы должны быть корректны, чтобы не вводил пользователь.

  Ответить  
 
 автор: ladan   (05.01.2012 в 23:46)   письмо автору
 
   для: cheops   (05.01.2012 в 23:40)
 

ясно, спасибо еще раз

  Ответить  
 
 автор: ladan   (06.01.2012 в 00:27)   письмо автору
 
   для: cheops   (05.01.2012 в 23:40)
 

а вот такой пример: делаю вставку в таблицу, все переменные обработал, кроме $date = date(); т.к она не передается из вне. Может ли взломщик предугадать эту переменную и подменить ее как-то?

  Ответить  
 
 автор: cheops   (06.01.2012 в 00:49)   письмо автору
 
   для: ladan   (06.01.2012 в 00:27)
 

Нет, получить доступ к ней он не может... раньше, когда на большинстве серверов работала директива register_globals, существовала теоретическая возможность подмены переменной, если вы её не инициализировали и она так и не получала инициализации (но где-то использовалась).

  Ответить  
 
 автор: ladan   (06.01.2012 в 00:56)   письмо автору
 
   для: cheops   (06.01.2012 в 00:49)
 

еще раз спасибо :)

  Ответить  
 
 автор: ladan   (08.01.2012 в 00:44)   письмо автору
 
   для: ladan   (06.01.2012 в 00:56)
 

заметил, что если в форме(поле текст арея) слова разделить клавишей "Enter", и нажать "отправить" слова в форме сбиваются в кучу и там где они были разделены Enter'ом, появляется символы \r\n. Можно ли как запретить этот вывод? Точнее чтоб в текстовой области, слова не сбивались в кучу, а были показаны так, как я их разделил Enter'ом. Или это такая особенность этой функцией, что исправить не вариант?


<?

<textarea  name="primechanie_one"><? if(isset($primechanie_one)) {echo $primechanie_one;}  ?></textarea>

?>

  Ответить  
 
 автор: Slo_Nik   (08.01.2012 в 01:12)   письмо автору
 
   для: ladan   (08.01.2012 в 00:44)
 

возможно Вам подойдёт функция nl2br()

  Ответить  
 
 автор: ladan   (08.01.2012 в 01:37)   письмо автору
 
   для: Slo_Nik   (08.01.2012 в 01:12)
 

Интересная функция, с работой бд не подходит. Если человеку нужно что-то отредактировать, то в этой текстовой ареи эти переносы продублируется при каждой записи в бд, что не очень хорошо :)

  Ответить  
 
 автор: ladan   (08.01.2012 в 01:41)   письмо автору
 
   для: ladan   (08.01.2012 в 01:37)
 

какие символы использую в sql инъекциях? Тогда мне проще будет preg_replace'ом обработать эти символы и не пользоваться mysql_real_escape_string и проблема будет решена :)

  Ответить  
 
 автор: Slo_Nik   (08.01.2012 в 02:04)   письмо автору
 
   для: ladan   (08.01.2012 в 01:41)
 

эта функция специально предназначена для обработки данных в sql запросах, так зачем лепить preg_replace()?
Один из таких символов это одинарная кавычка '.
Если пользователь захочет записать в базу слово с данной кавычкой, то что получится?
Вы её удалите при помощи preg_replace() и что получится в итоге?
А так она будет экранирована на время запроса, попытка взлома потерпит неудачу, но в базу слово запишется без лишних слешей и сохранится пользовательский ввод.

  Ответить  
 
 автор: ladan   (08.01.2012 в 02:28)   письмо автору
 
   для: Slo_Nik   (08.01.2012 в 02:04)
 

ясно спасибо за инфу :)

  Ответить  
 
 автор: ladan   (08.01.2012 в 10:49)   письмо автору
 
   для: ladan   (08.01.2012 в 02:28)
 

а при магических ковычках включенных на хосте, стоит использовать еще mysql_real_escape_string?

Я заметил, что ковычки стали экранироваться тремя обратными слешами и в базу записываться и выводится \", то есть все равно один обратный слеш записывается в бд и выводится пользователю

Если пользоваться чем-то одним, то все нормально. В чем разница магических ковычек и mysql_real_escape_string?

  Ответить  
 
 автор: Slo_Nik   (08.01.2012 в 13:09)   письмо автору
 
   для: ladan   (08.01.2012 в 10:49)
 

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

<?php 
  
if(get_magic_quotes_gpc()) 
  { 
     
$_POST['name'] = stripslashes($_POST['name']); 
  } 
?>

можно кавычки отключить через .htaccess
php_flag magic_quotes_gpc off

  Ответить  
 
 автор: ladan   (08.01.2012 в 13:48)   письмо автору
 
   для: Slo_Nik   (08.01.2012 в 13:09)
 

Спасибо, отключил кавычки.

Все подправил, теперь с безопасностью проблем не будет :)

  Ответить  
 
 автор: Slo_Nik   (08.01.2012 в 13:55)   письмо автору
 
   для: ladan   (08.01.2012 в 13:48)
 

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

  Ответить  
 
 автор: ladan   (08.01.2012 в 15:33)   письмо автору
 
   для: Slo_Nik   (08.01.2012 в 13:55)
 

Сейчас сайт на хостинге, в панели управления можно включать/отключать их. Если в будущем сайт буду переносить, то уже только на тот хостинг, чтоб была возможность их отключать, по идеи мне они вообще теперь не нужны. Если нужно заэкранировать, то функцией mysql_real_escape_string() :)

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

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