powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Защита POST переменных?
12 сообщений из 12, страница 1 из 1
Защита POST переменных?
    #39536743
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Подскажите, нужно ли дополнительно каким-либо образом защищать или проверять переменные, передаваемые через POST, если эти переменные пользователь ни как не вводит , а либо выбирает один вариант из установленного в HTML списка (<select name="..."> <option value="..." >...), либо кликает по ссылке, которая передает заготовленную в HTML переменную (<input type="hidden" name="..." value="1" >).
Т.е. нужно ли на принимающей странице проверять эти переменные, чтобы не было всяких там SQL инъекций или еще чего?
Или при таких формах передачи - это не возможно?
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536749
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pash358передаваемые через POST, если эти переменные пользователь ни как не вводит
Две части цитаты противоречат друг другу.
Весь POST поступает с клиента и там может быть всё что угодно.
Если данные предполагались к заполнению из списка - вы обязаны проверить, что переданное значение входило в этот список. И так далее.

И вы ошиблись разделом или же вовсе форумом.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536780
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я форумом не ошибся, т.к. эти переменные 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')
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536798
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pash358,

форумом вы ошиблись т.к. вы до сих пор не спросили ничего про СУБД. Валидация формы не имеет никакого отношения к базе. А то может ещё в lkml напишете потому что при передаче запроса от клиента в php данные проходят через ядро linux?

По-моему я недвусмысленно написал
MelkijЕсли данные предполагались к заполнению из списка - вы обязаны проверить, что переданное значение входило в этот список

Что такое uc и должно ли оно по логике вашего приложения приходить только со значением 1 - да откуда же мне знать?! Это ваше приложение.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536870
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЧто такое uc и должно ли оно по логике вашего приложения приходить только со значением 1 - да откуда же мне знать?!
Я просто спросил - такой код нормальный? (uc - это просто переменная - для примера).

Вообще, мой вопрос - для избежания SQL инъекций, поэтому по-моему все-таки я форумом не ошибся. Но спорить не буду, может на этом сайте для этого другой форум предусмотрен.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536871
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из кода должно быть понятно, что методом POST передается значение 1 для uc.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536884
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничто не мешает злоумышленнику сформировать и передать методом POST любое значение параметра (простейший вариант - перехват и модификация передаваемого значения в браузерном отладчике).

pash358мой вопрос - для избежания SQL инъекций, поэтому по-моему все-таки я форумом не ошибся.Ошиблись. Для MySQL-сервера вообще не существует такого понятия, как "SQL-инъекция". Это понятия уровня сервера, обращающегося к MySQL (PHP или иного скрипт-сервера) - именно туда и следует адресовать вопрос. А там Вас первым делом отправят читать мануалы на PDO и привязку параметров.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39536904
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 - тут нет).
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39537030
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pash358Я читал на этом форуме, ГЛАВНОЕ - чтобы данные из переменных (POST, GET) напрямую не записывались в базу при MYSQL запросе.
Что значит "напрямую"?
Вот тут я нагло вкрячил POST-переменную в запрос - это считается напрямую или не считается? Так делать нельзя? Почему?
Код: sql
1.
2.
3.
4.
5.
6.
if(preg_match('/^[\da-z_\-]{4,12}$/', $_POST['login'])) {
    $query = "INSERT INTO `table` (`login`, ...) VALUES ('{$_POST['login']}', ...)";
    mysql_query($query);
} else {
    error_msg('Логин должен содержать...');
}
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39537048
pash358
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть вы и правы, точно не знаю.
Но я читал на сайтах и на этом форуме, что ни одна из функций не дает полной защиты. Так что сложно мне вам возразить или согласиться. Я не очень разбираюсь в SQL инъекциях и т.п.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39537062
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pash358Может быть вы и правыВ чём я могу быть прав или не прав? Вы что-то про "напрямую" начали говорить, но так и не пояснили, что это такое.
pash358ни одна из функций не дает полной защитыОт кривых рук и от отфонарного использования - не дает, это верно. При осознанном использовании любая функция может быть полезной.

По сути главного вопроса
pash358Т.е. нужно ли на принимающей странице проверять эти переменные, чтобы не было всяких там SQL инъекций или еще чего?Ответ утвердительный. Все входные данные следует проверять. Притом, проверок очень часто бывает несколько и направлены они не столько на противодействие "всяким там SQL инъекциям, сколько на бизнес-логику приложения". Про защиту от инъекций уже написали выше. В ограниченном числе случаев проверка может быть совмещена. Например, как в Вашем случае, когда на вход может приходить одно из нескольких гарантировано безопасных значений. Когда на вход поступает текст в свободной форме, который должен попасть в базу - тут либо шаманство и разгребание багов, либо PDO / mysqli и параметры.
...
Рейтинг: 0 / 0
Защита POST переменных?
    #39537615
machetero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
POST-запрос можно послать не только из браузера. К вам в $_POST может придти что угодно, поэтому да, проверять надо всегда, и экранировать тоже.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Защита POST переменных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]