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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Избежание MySQL инъекций

Сообщения:  [1-7] 

 
 автор: Unkind   (07.01.2007 в 13:28)   письмо автору
 
   для: fraggedbynoob   (07.01.2007 в 05:06)
 

для чисел гораздо проще наверное так:
Абсоюлютно никакой разницы.

В любом случае не для чисел лечше всегда делать вот так:
Никогда так не делайте. Для этого есть mysql_escape_string().

   
 
 автор: fraggedbynoob   (07.01.2007 в 05:06)   письмо автору
 
   для: golovdinov   (05.01.2007 в 18:46)
 

для чисел гораздо проще наверное так:

$user = intval($_GET['name']);

если допустимым является диапазон значений
- укажите его при проверке

если допустимыми являются определённые значения
- создайте массив и проверте на наличие - вводимое пользователем число.

В любом случае не для чисел лечше всегда делать вот так:

$user = str_replace("'", "`", $user);

- это как минимум

   
 
 автор: Unkind   (05.01.2007 в 19:14)   письмо автору
 
   для: golovdinov   (05.01.2007 в 18:46)
 


<?php
//Если запрос вида "SELECT * FROM `tbl` WHERE `string` = '".$string."';"
if(!get_magic_quotes_gpc())
{
$string mysql_escape_string($_GET['string']);
}

//Если запрос вида "SELECT * FROM `tbl` WHERE `num` = ".$num.";", то лучше так:
$flnum = (float) $_GET['flnum']; //Дробное
$num = (int) $_GET['num']; //Целое число
?>

   
 
 автор: LuxeMate   (05.01.2007 в 18:55)   письмо автору
 
   для: golovdinov   (05.01.2007 в 18:46)
 

Я делал так для чисел


<?php
preg_match
("#(\d+)#",$_GET['user_id'],$user_arr);
$user_id $user_arr[1];
?>


а для имён можно прег_реплейс как нибудь осуществить))

   
 
 автор: golovdinov   (05.01.2007 в 18:46)   письмо автору
 
   для: Бамси   (05.01.2007 в 18:39)
 

Я наверное неточно выразился. Я имел ввиду вариант когда в какой-нибудь из переменных передается MySQL иньекция, а сама переменная не обрабатывается и в чистом виде передается в запрос к БД mysql_query.

<?

$user 
$_GET['name'];

$get_user mysql_query ("SELECT * FROM users WHERE name = '$user'");

...

?>

   
 
 автор: Бамси   (05.01.2007 в 18:39)   письмо автору
 
   для: golovdinov   (05.01.2007 в 18:34)
 

А зачем серверу скрипт запроса в MySQL, если он не может не посомтреть записи не добавить, не удалить, не обновить?
Тогда смысл запроса?

   
 
 автор: golovdinov   (05.01.2007 в 18:34)   письмо автору
 
 

Подскажите пожадуйста, как проверить переменную $_SERVER['QUERY_STRING'] на основные MySQL команды: SELECT, INSERT, DELETE, UPDATE и т.д. А если переменная содержит таковые, то остановить выполнение сценария.
Если у вас есть другие идеи по избежанию MySQL иньекций, то буду очень признателен.

Заранее спасибо.

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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