[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как защитить скрипт от SQL уроз, и прочих
sochinec
Как вы защищаете свои php Скрипты, используете ли Регулярные Выражения? или же приводите данные к нужному типу и просто прогоняете переменные через
mysql_real_escape_string
?

Вот как я делаю.

1. Приводить данные к нужному типу.+
2. Прогонять через регулярные выражения
3. Прогонять через mysql_real_escape_string, addslashes
4. Имена полей и таблиц следует заключать в обратные одинарные кавычки - "`"

Давайте обсудим.

З.Ы. Подскажите регулярное выражение разрешающее только цифры в переменной



Спустя 29 минут, 53 секунды (21.04.2010 - 00:30) igor717 написал(а):
Ну проверку на числовое значение можно сделать так:
if (!preg_match("|^[\d]+$|", $a))
{
Если выясняется, что переменная $a содержит что-то кроме целого числового значения, то уж сами решайте что с ней делать...
}

Спустя 9 минут, 21 секунда (21.04.2010 - 00:39) sochinec написал(а):
Пардон, что то не получается, не видет эта конструкция, что я написал add.php?car=ujjhh
тоесть что в перменной буквы.

Спустя 13 минут, 50 секунд (21.04.2010 - 00:53) igor717 написал(а):
Ну по поводу этой конструкции можно к примеру вывести так:

if (!preg_match("|^[\d]+$|", $a)) 
{
exit ("Вы ввели что-то не то");
}


Это очень удобно на мой взгляд использовать в проверки GET переменных, которые отвечают за вывод определенного любого контента, при условии что мы то знаем что в этой переменной ничего иного не должно появится нежели целое число к примеру ?news=10 выводит статью с id=10.

Ну а если нужно там к примеру удалить из переменной все кроме чисел то можно так:

$a = "/kjhsdf12.3&^./";
$a = trim(preg_replace("|[^0-9]|", "",$a));
echo $a;


Выведит - 123.


Спустя 4 часа, 54 минуты, 12 секунд (21.04.2010 - 05:47) glock18 написал(а):
sochinec
самое надежное вообще не использовать базу данных. тогда почти наверняка от sql-атак огражден (хотя и здесь дуба можно дать) wink.gif

igor717
для проверки целочисленности или приведения аргумента к целочисленному есть целая куча способов, и ты использовал один из самых неудачных. есть несколько простых функций, не использующих регулярные выражения, для этого. is_numeric, intval, ctype_digit например.

Спустя 5 минут, 15 секунд (21.04.2010 - 05:53) twin написал(а):

Спустя 5 часов, 26 минут, 30 секунд (21.04.2010 - 11:19) igor717 написал(а):
Ну просто он спросил
Цитата
З.Ы. Подскажите регулярное выражение разрешающее только цифры в переменной

Спустя 6 минут, 28 секунд (21.04.2010 - 11:26) twin написал(а):
Он спросил не это. Он спросил дословно:
Цитата
Как забить гвоздь микроскопом?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.