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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Защита переменных в URL строке браузера

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: $_GET
in9emix
Отправлено: 30 Июня, 2012 - 00:56:56
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Здравствуйте, подскажите как можно защитить переменные отправленные методом $_GET ?
Пока что сайт защищен htaccess, но я думаю этого не достаточно. Так как он не спасет от например:

www.��айт.ру/lesson/16 UNION * lessons WHERE lesson="$proba" ...... к примеру

Суть такова, что нужно сделать надежную защиту для сайта.
 
 Top
caballero
Отправлено: 30 Июня, 2012 - 01:06:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а от чего надо защащать переменные?
если речь об инекциях то is_integer закроет 99% проблем


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
in9emix
Отправлено: 30 Июня, 2012 - 04:01:43
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Почему у меня не работает? is_integer

Использую так:

$id=is_integer ($id);

Работает аналог:

$id=intval($id);
 
 Top
Wol_fi
Отправлено: 30 Июня, 2012 - 05:41:40
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Февр. 2012  


Помог: 2 раз(а)




in9emix пишет:
Почему у меня не работает? is_integer

Использую так:

$id=is_integer ($id);

Работает аналог:

$id=intval($id);

Для числовых значений intval() достаточно, для строк же лучше использовать специальные функции в зависимости от субд. С MySQL допустим поможет mysql_real_escape_string().
 
 Top
in9emix
Отправлено: 30 Июня, 2012 - 06:12:26
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Ладно, а стоит ли тогда использовать эту защиту для переменных которые передаются методом POST в инпуте с типом hidden ? Например id юзера и его логин
 
 Top
Wol_fi
Отправлено: 30 Июня, 2012 - 06:29:14
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Февр. 2012  


Помог: 2 раз(а)




in9emix пишет:
Ладно, а стоит ли тогда использовать эту защиту для переменных которые передаются методом POST в инпуте с типом hidden ? Например id юзера и его логин

Зависит от вашей лени)) Но есть золотое правило - "не доверяй пользователю ничего". Вообще проверять нужно всё что приходит от пользователя, включая куки. Потому что заголовок и тело запроса - открыты , их можно просмотреть даже стандартными средствами браузера, не говоря уже о снифферах и всякой нечисти.

(Отредактировано автором: 30 Июня, 2012 - 06:30:16)

 
 Top
in9emix
Отправлено: 30 Июня, 2012 - 08:02:25
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




А если переменная == цифре, я могу смело вместо mysql_real_escape_string() юзать intval() ?
 
 Top
Zuldek
Отправлено: 30 Июня, 2012 - 08:04:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




in9emix пишет:
А если переменная == цифре, я могу смело вместо mysql_real_escape_string() юзать intval() ?

можете.
 
 Top
Green
Отправлено: 30 Июня, 2012 - 10:23:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)





И всё. Улыбка

(Отредактировано автором: 30 Июня, 2012 - 10:29:31)

 
 Top
Prizma
Отправлено: 30 Июня, 2012 - 13:09:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




не проще ли проверять регулярными выражениями? одна строчка, зато точно знаешь то что нужно
PHP:
скопировать код в буфер обмена
  1.  
  2. $string;
  3. if(preg_match('#^[0-9]{1,5}$#', $id)){..}else{id = 1;} /* или вот так */ else{die();}
  4.  
  5.  

научили ими пользоваться теперь только так))
(Добавление)
по поводу защиты меня больше волнует то что переменные которые не гет могут тебе гет отправить...)) над не забывать перед использованием всегда присваивать значение будь то NULL или что ещё
 
My status
 Top
Green
Отправлено: 30 Июня, 2012 - 16:54:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




Prizma пишет:
не проще ли проверять регулярными выражениями?

Не понял Надеюсь, это сарказм/шутка? Весь Ваш код может заменить такая вот приставка (int). Ну Вы и шутник конечно))) Радость

Не надо химичить с регулярками. В php, есть специальные функции.
is_numeric() - проверяет, является ли переданный аргумент числом.
intval() - приводит переданный аргумент в целое число.
is_int() - проверяет, является ли переданный аргумент целым числом, вроде как...
 
 Top
Wol_fi
Отправлено: 30 Июня, 2012 - 21:02:13
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Февр. 2012  


Помог: 2 раз(а)




Prizma пишет:
не проще ли проверять регулярными выражениями? одна строчка, зато точно знаешь то что нужно
PHP:
скопировать код в буфер обмена
  1.  
  2. $string;
  3. if(preg_match('#^[0-9]{1,5}$#', $id)){..}else{id = 1;} /* или вот так */ else{die();}
  4.  
  5.  

научили ими пользоваться теперь только так))
(Добавление)
по поводу защиты меня больше волнует то что переменные которые не гет могут тебе гет отправить...)) над не забывать перед использованием всегда присваивать значение будь то NULL или что ещё

не проще, зачем регулярка (которая кстати не отличается скоростью работы в php) когда есть готовые функции из php api? Вообще проблема начинающих в велосипедировании уже имеющегося функционала, например тот же filter_var() много чего умеет, но все лепят вместо него регулярки, при том не всегда правильные

(Отредактировано автором: 30 Июня, 2012 - 21:08:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB