Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Подскажите, нужно ли дополнительно каким-либо образом защищать или проверять переменные, передаваемые через POST, если эти переменные пользователь ни как не вводит , а либо выбирает один вариант из установленного в HTML списка (<select name="..."> <option value="..." >...), либо кликает по ссылке, которая передает заготовленную в HTML переменную (<input type="hidden" name="..." value="1" >). Т.е. нужно ли на принимающей странице проверять эти переменные, чтобы не было всяких там SQL инъекций или еще чего? Или при таких формах передачи - это не возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 10:52 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
pash358передаваемые через POST, если эти переменные пользователь ни как не вводит Две части цитаты противоречат друг другу. Весь POST поступает с клиента и там может быть всё что угодно. Если данные предполагались к заполнению из списка - вы обязаны проверить, что переданное значение входило в этот список. И так далее. И вы ошиблись разделом или же вовсе форумом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 10:59 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
Я форумом не ошибся, т.к. эти переменные POST - потом идут в MYSQL запрос - т.е. поступают в базу или поступают в базу данные, но в соответствии с данными переданными через POST. авторЕсли данные предполагались к заполнению из списка - вы обязаны проверить - я так понял, что если, например, у меня есть в HTML список (<select name="..."> <option value="...">...) и пользователь долен был выбрать одно значение из списка, то я и должен проверить на принимающей странице - соответствует ли значение полученной POST переменной любому варианту значений из этого списка - Я ПРАВИЛЬНО ПОНЯЛ? Например: if (isset($_POST['uc'])){$uc = $_POST['uc'];} else {$uc = '';} if ($uc=='1'){ include('...'); mysql_connect($hostname, $user, $password); $db='aaa12345'; mysql_select_db($db); $q=mysql_query ("SELECT * FROM ccc"); ... } Такая проверка - нормальная: if ($uc=='1') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 11:35 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
pash358, форумом вы ошиблись т.к. вы до сих пор не спросили ничего про СУБД. Валидация формы не имеет никакого отношения к базе. А то может ещё в lkml напишете потому что при передаче запроса от клиента в php данные проходят через ядро linux? По-моему я недвусмысленно написал MelkijЕсли данные предполагались к заполнению из списка - вы обязаны проверить, что переданное значение входило в этот список Что такое uc и должно ли оно по логике вашего приложения приходить только со значением 1 - да откуда же мне знать?! Это ваше приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:02 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
авторЧто такое uc и должно ли оно по логике вашего приложения приходить только со значением 1 - да откуда же мне знать?! Я просто спросил - такой код нормальный? (uc - это просто переменная - для примера). Вообще, мой вопрос - для избежания SQL инъекций, поэтому по-моему все-таки я форумом не ошибся. Но спорить не буду, может на этом сайте для этого другой форум предусмотрен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 14:00 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
Из кода должно быть понятно, что методом POST передается значение 1 для uc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 14:02 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
Ничто не мешает злоумышленнику сформировать и передать методом POST любое значение параметра (простейший вариант - перехват и модификация передаваемого значения в браузерном отладчике). pash358мой вопрос - для избежания SQL инъекций, поэтому по-моему все-таки я форумом не ошибся.Ошиблись. Для MySQL-сервера вообще не существует такого понятия, как "SQL-инъекция". Это понятия уровня сервера, обращающегося к MySQL (PHP или иного скрипт-сервера) - именно туда и следует адресовать вопрос. А там Вас первым делом отправят читать мануалы на PDO и привязку параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 14:21 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
1) По форуму - понятно. 2) авторНичто не мешает злоумышленнику сформировать и передать методом POST любое значение параметра (простейший вариант - перехват и модификация передаваемого значения в браузерном отладчике). У меня в принимающей странице - на PHP есть проверка: if ($uc=='1'){...} разве этого не достаточно? При этом в MYSQL запросе в базу записывается значение расчетное (расчет в PHP), а не из POST переменной. POST переменная лишь определяет - была ли нажата ссылка. Или другой вариант - переменная POST определяет лишь номер строки в таблице, куда будет записано расчетное значение (но аналогичная проверка будет произведена и в этом случае if ($uc=='1'){...}). Я читал на этом форуме, ГЛАВНОЕ - чтобы данные из переменных (POST, GET) напрямую не записывались в базу при MYSQL запросе. Я это вроде бы это соблюдаю в приведенном выше коде PHP ($q=mysql_query ("SELECT * FROM ccc "); $uc - тут нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 14:44 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
pash358Я читал на этом форуме, ГЛАВНОЕ - чтобы данные из переменных (POST, GET) напрямую не записывались в базу при MYSQL запросе. Что значит "напрямую"? Вот тут я нагло вкрячил POST-переменную в запрос - это считается напрямую или не считается? Так делать нельзя? Почему? Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 17:23 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
Может быть вы и правы, точно не знаю. Но я читал на сайтах и на этом форуме, что ни одна из функций не дает полной защиты. Так что сложно мне вам возразить или согласиться. Я не очень разбираюсь в SQL инъекциях и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 18:12 |
|
||
|
Защита POST переменных?
|
|||
|---|---|---|---|
|
#18+
pash358Может быть вы и правыВ чём я могу быть прав или не прав? Вы что-то про "напрямую" начали говорить, но так и не пояснили, что это такое. pash358ни одна из функций не дает полной защитыОт кривых рук и от отфонарного использования - не дает, это верно. При осознанном использовании любая функция может быть полезной. По сути главного вопроса pash358Т.е. нужно ли на принимающей странице проверять эти переменные, чтобы не было всяких там SQL инъекций или еще чего?Ответ утвердительный. Все входные данные следует проверять. Притом, проверок очень часто бывает несколько и направлены они не столько на противодействие "всяким там SQL инъекциям, сколько на бизнес-логику приложения". Про защиту от инъекций уже написали выше. В ограниченном числе случаев проверка может быть совмещена. Например, как в Вашем случае, когда на вход может приходить одно из нескольких гарантировано безопасных значений. Когда на вход поступает текст в свободной форме, который должен попасть в базу - тут либо шаманство и разгребание багов, либо PDO / mysqli и параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39536780&tid=1830349]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 366ms |

| 0 / 0 |
