Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Безопасность глобальных массивов
Форумы портала PHP.SU » PHP » Программирование на PHP » Безопасность глобальных массивов

Страниц (1): [1]
 

1. Toxa - 03 Июня, 2010 - 22:07:07 - перейти к сообщению
Всем привет! Как вы считаете, достаточно ли использовать magic_quotes_gpc() для предотвращения sql иньекций?

Можно добавить данные функции в каждый файл и не знать бед. Так ли это? Или может лучше addslashes() заменить на mysql_real_escape_string ?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function addslashes_for_array(&$arr)
  3. {
  4.    foreach($arr as $k=>$v)
  5.    {
  6.        if (is_array($v))
  7.        {
  8.            addslashes_for_array($v);
  9.            $arr[$k] = $v;
  10.        }
  11.        else
  12.        {
  13.            $arr[$k] = addslashes($v);
  14.        }
  15.    }
  16. }
  17.  
  18. function fix_magic_quotes_gpc()
  19. {
  20.    if (!get_magic_quotes_gpc())
  21.    {
  22.        addslashes_for_array($_POST);
  23.        addslashes_for_array($_GET);
  24.        addslashes_for_array($_COOKIE);
  25.    }
  26. }
  27. ?>
  28.  
2. alexspb - 04 Июня, 2010 - 09:10:57 - перейти к сообщению
mysql_real_escape_string позволяет прежде всего с кодировками разными работать
а тотальная экранизация данных - лишняя нагрузка - не все они для запросов используются, к тому же иногда просто надо проверять - число ли и т.п.
3. JustUserR - 04 Июня, 2010 - 12:31:07 - перейти к сообщению
alexspb пишет:
Mysql_real_escape_string позволяет прежде всего с кодировками разными работать
С этим вы конечно правы однако использование данной функции сразу при загрузке PHP-скрипта малополезно - ведь функция mysql_real_escape_string работает для определенного SQL-соединения переданого ей во втором параметре и производит экранирование именно в соответствии с ним Просто в PHP если имеется только один ресурс SQL-соединения то он автоматически подставляется во все SQL-функции и его можно опускать при вызове - поэтому если нужна функция именно для экранирования входящих GPC-данных то нужно выяснить их кодировку и привести к текущей кодировки PHP-скрипта - после чего уже вызыывать функцию addslashes

 

Powered by ExBB FM 1.0 RC1