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 :: Как правильно получить данные из массива POST

 PHP.SU

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


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

> Без описания
nik_grey
Отправлено: 13 Июня, 2014 - 10:22:03
Post Id


Гость


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


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




День добрый.
Вот хочу поинтересоваться как грамотно получить данные из массива POST.
Данные передаются с формы через POST.
Получить данные я могу так

Тут проблем нет: сто раз так делал)
Но.. работаю в IDE NetBeans и при таком коде выбивает предупреждение, что 'Не следует обращаться напрямую к массиву $_POST' и советует использовать filter_input.
Вот хочу спросить как сделать правильно и постараться не говнокодить хотя бы в этом случаи)..
Заранее спасибо.
 
 Top
Ch_chov
Отправлено: 13 Июня, 2014 - 11:09:39
Post Id



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


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


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




nik_grey пишет:
'Не следует обращаться напрямую к массиву $_POST' и советует использовать filter_input.

Во первых вместо filter_input в разных фреймворках или SMS могут использоваться свои фильтры.
Во вторых, не всегда эти фильтры нужны.

PHP:
скопировать код в буфер обмена
  1. $allowed_actions = [
  2.   'publish',
  3.   'delete',
  4.   'save',
  5.   'edit',
  6. ];
  7. if (isset($_POST['action'])) {
  8.   if (in_array($_POST['action'], $allowed_actions)) {
  9.     // filter_input тут не нужен.
  10.     echo $_POST['action'];
  11.   }
  12.   else {
  13.     exit ('Unknown action');
  14.   }
  15. }
  16.  


POST опасен, тем что формируется на стороне пользователя и поэтому может содержать абсолютно любые данные. Если это не учитывать, то можно получить кучу неприятностей: XSS, разные виды иньекций и т.д.

(Отредактировано автором: 13 Июня, 2014 - 11:20:26)

 
 Top
esterio
Отправлено: 13 Июня, 2014 - 11:12:21
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




PHP:
скопировать код в буфер обмена
  1. $_POST['action'] = '<script>alert(1);</script>';

ВУАЛЯ XSS.

В общем не раз использовал filter_inut_array - класная штука
 
 Top
Ch_chov
Отправлено: 13 Июня, 2014 - 11:19:22
Post Id



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


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


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




esterio пишет:
ВУАЛЯ XSS.

exit ('Unknown action');

(Отредактировано автором: 13 Июня, 2014 - 11:19:57)

 
 Top
esterio
Отправлено: 13 Июня, 2014 - 11:26:17
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




да не заметил сразу, хотя где-то читал про 0-байт, но чесно не помню, поетому тихо удаляюсь
 
 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