Безопасно ли хранить значение в переменной сеанса и выполнять запросы к значению? - PullRequest
4 голосов
/ 16 февраля 2011

У меня есть сайт, где имя пользователя хранится в переменной сеанса, когда они вошли в систему. Мне интересно, безопасно ли делать запросы на основе значения, хранящегося в этой переменной сеанса?

Ответы [ 5 ]

6 голосов
/ 16 февраля 2011

да , сеанс хранится на стороне сервера.

вместо сохранения имени пользователя вы можете сохранить идентификатор пользователя (int), чтобы на сервере было меньше места.Помните, что вы должны обрабатывать CSRF и захват Session

3 голосов
/ 16 февраля 2011

Да, это сохранить.Однако всегда экранирует любые входные данные, входящие в запрос (лучший способ - это связанный параметр).Никогда не доверяйте никаким переменным явно, особенно если вы не можете видеть напрямую, откуда они берутся (то есть, если вы не можете прокрутить вверх и увидеть $foo = 'bar';).Поэтому лучший способ - просто не доверять всему, и в итоге вы будете в большей безопасности ...

2 голосов
/ 16 февраля 2011

Сеансы работают путем сохранения идентификатора сеанса в файле cookie, отправляемом на пользовательский компьютер, и сохранения всех фактических переменных на сервере. Таким образом, ваше главное беспокойство заключается в том, что пользователь сможет узнать идентификатор сеанса другого пользователя и притвориться им; то есть, угон сеанса .

Учитывая это, вы не особо беспокоитесь о SQL-инъекциях, так что вы должны быть в порядке, если делаете запросы по переменным, хранящимся в сеансе. Тем не менее, вы должны быть обеспокоены тем, что данные могут быть просмотрены кем-то, кроме предполагаемого получателя. Если вы принимаете меры предосторожности против угона, то вы должны быть в порядке.

1 голос
/ 16 февраля 2011

фактически, безопасно использовать ЛЮБУЮ переменную в запросе SQL, если вы соблюдаете синтаксис и правила безопасности.

И источник данных здесь не имеет никакого отношения.Неважно, является ли это сеанс или файл, или запрос RPC или данные POST.Все данные одинаковы для запроса и должны обрабатываться всегда одинаково.

Я знаю, что это трудно понять, но это тоже очень важно, так что, по крайней мере, попробуйте.

1 голос
/ 16 февраля 2011

Это зависит.

Если страницы вашего сайта, которые используют сеанс, защищены шифрованием (HTTPS), то это снижает риск перехвата сеанса из-за перехвата сетевого трафика (cookie, содержащий идентификатор сеанса, защищен.)

Однако, если вы находитесь на общем хосте, файл сеанса обычно хранится в центральном расположении, и доверие к незашифрованным данным сеанса сопряжено с некоторым риском.

Вы можете зашифровать данные сеанса или разработать собственное хранилище сеансов, как показано в ссылке ниже:
Сделайте так, чтобы ваш обработчик сеанса

Но независимо от того, что вы делаете или насколько доверяете своим данным сеанса, вы должны использовать подготовленные операторы или хранимые процедуры для защиты целостности ваших операторов SQL и предотвращения внедрения SQL.

...