SQL инъекций для сессий - PullRequest
2 голосов
/ 02 февраля 2012

Я использовал mysql_real_escape_string (), чтобы предотвратить внедрение sql для переменной $ field ниже.Должен ли я использовать то же самое для $ _SESSION ['user_id']?

Я не могу представить, чтобы кто-то мог изменить значение в массиве $ _SESSION.Могут ли они?

$query = "SELECT `".mysql_real_escape_string($field)."` FROM `users` WHERE         `id`='".$_SESSION['user_id']."'";

Ответы [ 4 ]

5 голосов
/ 02 февраля 2012

Они не могут изменить массив $_SESSION, но ваша проблема полностью зависит от того, как вы инициализировали $_SESSION['id']. В общем случае вы всегда должны экранировать значения в запросе SQL. Не пытайтесь угадать , можно ли изменять значения из пользовательского ввода, просто избегайте их.

2 голосов
/ 02 февраля 2012

Клиент не может изменить ваши значения SESSION.

Но я верю, что тот, кто получил доступ к вашему серверу, сможет.(Но в этот момент вы должны беспокоиться о других вещах)

0 голосов
/ 02 июня 2013

Я использовал mysql_real_escape_string (), чтобы предотвратить внедрение SQL

Это то, что вы сделали не так.

mysql_real_escape_string () не предотвращает какие-либо инъекции любыми способами.

Эта функция предназначена для форматирования строк и не должна использоваться ни для чего другого.
Чтобы отформатировать идентификатор, вы должны заключить его в обратные кавычки и экранировать те самые обратные кавычки внутри

0 голосов
/ 02 февраля 2012

Если ваши переменные сеанса когда-либо заполнены пользовательскими переменными, то ваши переменные сеанса так же уязвимы для внедрения SQL, как и любые другие переменные, управляемые пользователем.Вы также можете сделать это в будущем и забыть вернуться назад и избежать запроса SQL.

Это не причинит вреда, если вы избегаете всего и оставляете это убегать до самого последнего момента (т.е. когда значение передается взапрос);это позволяет избежать любых других манипуляций с переменными, сводящими на нет эффект экранирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...