Безопасность сеанса Codeigniter - PullRequest
6 голосов
/ 09 декабря 2011

Как я могу повысить безопасность моих сессий?

$this->session->userdata('userid')

Я швырнул этого маленького плохого парня за мои вызовы ajax.Некоторые случаи у меня нет.Тогда я подумал, действительно ли это безопасно, используя идентификатор из DOM?Что делать, если DOM изменен для взлома данных учетных записей пользователей?Итак, я думал, что каждый раз, когда пользователь делает что-то, связанное с его идентификатором, следует ссылаться только на сеансы.Я прав?

Ссылка выглядит так:

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid'));

Тогда я читаю это:

В то время как массив данных сеанса, сохраненный в cookie пользователя, содержит сеансID, если вы не сохраняете данные сеанса в базе данных, нет способа проверить их.Для некоторых приложений, которые требуют минимальной безопасности или не обеспечивают ее, проверка идентификатора сеанса может не потребоваться, но если ваше приложение требует защиты, проверка является обязательной.В противном случае старый сеанс может быть восстановлен пользователем, изменившим свои куки.http://codeigniter.com/user_guide/libraries/sessions.html

Я не собираюсь хранить финансовые данные, но я не хочу, чтобы какие-либо данные на моем сайте были повреждены.SO использует проверку сеанса?Сколько будет стоить эта проверка?Как будет взломана сессия?На что обращать внимание при обеспечении безопасности сеансов?

1 Ответ

20 голосов
/ 09 декабря 2011

Использование сеансов CodeIgniter с базой данных будет довольно безопасным. Вам просто не нужно доверять входным данным, которые дает пользователь. Даже если вы используете AJAX, сеанс CodeIgniter будет работать так же, как и любой стандартный вызов, поэтому такая же защита сохраняется.

Что происходит с сеансом CodeIgniter, так это то, что сервер сохраняет куки, и каждый раз, когда пользователь выполняет действие, которое может изменить содержимое куки, он сначала сравнивается с предыдущим куки.

Если пользователь изменяет содержимое cookie сеанса в браузере, CodeIgniter уведомит об этом при следующем вызове сервера и создаст новый сеанс для пользователя, в основном выйдя из него.

CodeIgniter на самом деле не нуждается в данных, хранящихся в cookie в браузере пользователя, и до тех пор, пока вы используете

$this->session->userdata('userid');

вы получите надежные данные на стороне сервера. Пользователь не может изменить это. Кроме того, куки могут быть зашифрованы, и вы должны иметь его в зашифрованном виде. Просто посмотрите в config.php CodeIgniter.

Существует несколько других средств защиты данных сеанса: короткое время обновления (обычно 300 секунд), оно проверяет, изменился ли IP-адрес и изменился ли браузер. Другими словами, в худшем случае единственный способ подделать данные сеанса - это иметь одну и ту же версию браузера, иметь тот же IP-адрес, получить прямой доступ к компьютеру для копирования / вставки cookie и выполнить это. в течение 5 минут.

Итак, следите за парнем, сидящим рядом с вами!

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