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

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

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

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

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

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

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

pash358мой вопрос - для избежания SQL инъекций, поэтому по-моему все-таки я форумом не ошибся.Ошиблись. Для MySQL-сервера вообще не существует такого понятия, как "SQL-инъекция". Это понятия уровня сервера, обращающегося к MySQL (PHP или иного скрипт-сервера) - именно туда и следует адресовать вопрос. А там Вас первым делом отправят читать мануалы на PDO и привязку параметров.
...
Рейтинг: 0 / 0
16.10.2017, 14:44
    #39536904
pash358
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита POST переменных?
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
16.10.2017, 17:23
    #39537030
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита POST переменных?
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
16.10.2017, 18:12
    #39537048
pash358
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита POST переменных?
Может быть вы и правы, точно не знаю.
Но я читал на сайтах и на этом форуме, что ни одна из функций не дает полной защиты. Так что сложно мне вам возразить или согласиться. Я не очень разбираюсь в SQL инъекциях и т.п.
...
Рейтинг: 0 / 0
16.10.2017, 18:50
    #39537062
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита POST переменных?
pash358Может быть вы и правыВ чём я могу быть прав или не прав? Вы что-то про "напрямую" начали говорить, но так и не пояснили, что это такое.
pash358ни одна из функций не дает полной защитыОт кривых рук и от отфонарного использования - не дает, это верно. При осознанном использовании любая функция может быть полезной.

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


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