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 :: Версия для печати :: безопасность подключения к MySQL
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » безопасность подключения к MySQL

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

1. galag63 - 20 Октября, 2009 - 15:21:54 - перейти к сообщению
Правилен ли с точки зрения безопасности следующий код..?

$id = $HTTP_GET_VARS['id'];

/* соединяемся с базой данных */
mysql_pconnect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());

mysql_select_db("mydb");

/* здесь функция вернёт корректное число удалённых записей */
mysql_query("DELETE FROM mytable WHERE id = '$id'");

printf ("Records deleted: %d\n", mysql_affected_rows());
2. Мелкий - 20 Октября, 2009 - 15:32:44 - перейти к сообщению
Нет, достаточно запросить скрипт как ?id=1%20or%201 и всё содержимое таблицы будет стёрто. (может, правда, слегка ошибаюсь в символах URL'a, но, главное смысл - передать в качестве id "1 or 1"). Аналогично можно выполнить вообще любую mysql команду.
3. EuGen - 20 Октября, 2009 - 15:55:05 - перейти к сообщению
galag63 пишет:
$id = $HTTP_GET_VARS['id'];

Это уже давно устарело. Или Ваш учебник слишком старый. Используйте $_GET, $_POST, $_COOKIE или $_REQUEST
4. Leviafant - 20 Октября, 2009 - 20:34:22 - перейти к сообщению
если у вас id является тока цифрой то используйте intval()
приблизительно так, но там уже как удобней будет
CODE (text):
скопировать код в буфер обмена
  1. $id = $_GET['id'];
  2. $id = intval($id );
  3.  


http://www.php.su/articles/?cat=...pdb&page=031
Цитата:
Обрабатывайте данные, получаемые из адресной строки или из формы, и приводите их к нужному типу во избежание ошибок и "взломов" сайта. (ещё пример: если требуется идентификатор, то есть целое число, надо обработать его с помощью intval: $id = intval($id)).

 

Powered by ExBB FM 1.0 RC1