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

Форум PHP

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

 

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

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

тема: Проверка переменной против SQL инъекции
 
 автор: easywind   (06.03.2007 в 15:33)   письмо автору
 
 

Здравствуйте.
Давно хотел написать, но находил ответы на форуме и в книжках. Но возник вопрос почти во всех книжках рекомендуется проверять данные получаемые методом гет и пост (допустим идентификатора рублики) при помощи скрипта
if(!preg_match("|^[\d]+$|",$_GET['id_rub']))
{
exit("недопустимый формат запроса.");
}
Почти во всех книжках пишется, что регулярные выражения (в скриптах) могут тормозить сайт. Я видел в одном скрипте следующее
$id_cat = intval($_GET['id_cat'];
вопрос будет ли такой код безопасен и быстр по сравнению с предидущим?

   
 
 автор: t4f   (06.03.2007 в 15:41)   письмо автору
 
   для: easywind   (06.03.2007 в 15:33)
 

Я делаю прмерно так
$id_cat = (is_int($_GET['id_cat']) || (int)$_GET['id_cat']>0)?(int)$_GET['id_cat']:1;

   
 
 автор: easywind   (06.03.2007 в 16:04)   письмо автору
 
   для: t4f   (06.03.2007 в 15:41)
 

про проверку 0 я и забыл :)
тогда проще так наверно
if($_GET['id_cat'] > 0) intval($_GET['id_cat']);

   
 
 автор: Trianon   (07.03.2007 в 10:34)   письмо автору
 
   для: easywind   (06.03.2007 в 16:04)
 


if($_GET['id_cat'] > 0) intval($_GET['id_cat']);

Такой оператор не сделает ничего.

   
 
 автор: easywind   (11.03.2007 в 14:26)   письмо автору
 
   для: Trianon   (07.03.2007 в 10:34)
 

if($_GET['id_cat'] > 0) $id_cat = intval($_GET['id_cat']);

if($_GET['id_cat'] > 0) {
$id_cat = intval($_GET['id_cat']);
// дальнейшая работа
}

   
 
 автор: t4f   (11.03.2007 в 16:22)   письмо автору
 
   для: easywind   (11.03.2007 в 14:26)
 

Вначале проверяйте на тип.

   
 
 автор: cheops   (07.03.2007 в 00:42)   письмо автору
 
   для: easywind   (06.03.2007 в 15:33)
 

Да, такой код будет безопасен.

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

   
Rambler's Top100
вверх

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