Каталог продуктов и безопасность при передаче данных от пользователей

-faqer-

Я только учусь
Каталог продуктов и безопасность при передаче данных от пользователей

подскажите
есть каталог
входящие данные только id категорий и моделй
Как по-моему, в таком случае защиты всех входящих данных при помощи ceil ($_GET ['var']) вполне достаточно (все, что попадет в скрипт будет только целое число и ни каким образом не строка), или я ошибаюсь
 

neko

tеam neko
вообще-то это зависит не от того что оно попадет в скрипт
а от того, что скрипт с ним будет делать

если тебе нужно гарантировано привести входящие данные к числу -- intval()
но, это ничего кроме самой трансформации в число не гарантирует :)
 

-faqer-

Я только учусь
мне нужно чтобы в mysql не попал ничего кроме чисел

-~{}~ 10.12.04 00:25:

чтобы ни один ' ` select или еще что-то, только числа
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
число на вид - одно, а типы данных при этом - другое. int или string различны по природе, хотя внешне могут выглядеть одинаково. тебе нужен целочисленный id потому как сказал neko - intval()
 

vladax

Новичок
воистину дело в том что твой скрипт будет делать с переданными данными..
если у тебя register_globals=On, твои категории и модели лежат в файлах имена которых совпадают с $_GET ['var'], а подключаешь ты их include($var), то никакой intval() тебе не поможет..
извини за утрирование :)
 

-faqer-

Я только учусь
register_globals=off
Работа только с мускулем
Просто мне один чел написал, что я отстой, по той причине что не єскейпаю данные, которые получаю из $_GET при запросах к мускулю
Были у него правда и другие поводы. Но об этом как-то позже
 

neko

tеam neko
-faqer-
у mysql есть прикольная фича
я даже незнаю толи это очередной standarts non-compliance
толи это просто implicit cast

короче в mysql любую переменную можно заключить в кавычки даже если это число. в результате получается что если кавычки экранируются + ты заключаеш в кавычки все полученные от пользователя данные которые кладутся в запрос -- сверху не пролезет уже ничего... :)

другое дело из-за вставок без проверок данные в базе могут быть неадекватными.. :)

с субд которые числа хотят видет в виде чисел, строки не больше длинны заявленной для столбца и пр. и никак иначе все эти процедуры несколько сложнее
 

-faqer-

Я только учусь
ну т.е. как я понимаю, использование intval() это корректно и безопасно???
 

neko

tеam neko
конечно, сама по себе эта функция еще никому вреда не причиняла
 

vladax

Новичок
ну т.е. как я понимаю, использование intval() это корректно и безопасно???
корректно в том случае, если в скрипте нет модифицирующих базу команд.. а селекту то все одно :)
 

-faqer-

Я только учусь
одни селекты

>>если в скрипте нет модифицирующих базу команд
А в этом случае что???
 

vladax

Новичок
тогда какие проблемы, преобразуй переданную переменную в число, если нет записей удовлетворяющих запросу, выводи соответствующую месагу, либо ваще ничего не выводи..
 
Сверху