2017-01-30 6 views
2

Я знаю, что это дублированный вопрос Codeigniter/PHP sessions security question, но извините, что все меры, рекомендованные в моем случае, не удались в моем случае, и именно по этой причине я повторяю этот вопрос и этот вопрос задают в 2011 году и сейчас его ответы будут устаревшими. Поэтому, пожалуйста, не дублируйте его.Как предотвратить захват сеанса в CodeIgniter 3

В моем сценарии я включил $config['sess_driver'] = 'database'; и $config['sess_match_ip'] = TRUE; в файле конфигурации.

Я также помещаю токен csrf и фильтрацию XSS в свою форму аутентификации и всегда использую активные записи, чтобы предотвратить любую инъекцию SQL. Для дополнительной безопасности я также реализовал двухфакторную аутентификацию, Google ReCaptcha и ip-блокировку на 10-й попытке. Тем не менее, все вышеуказанные меры могут только предотвратить атаку грубой силы в моем случае, а не захват сеанса.

Если злоумышленник получил значение ci_session и мой ip, он может легко войти на мой сайт без каких-либо учетных данных.

Я знаю, что использование HTTPS может помочь, поскольку я могу включить $config['cookie_secure']=TRUE;, но я не уверен на 100%, поскольку я могу легко войти в свою учетную запись Twitter, чтобы сделать сеанс захвата и твиттера использовать HTTPS.

Я также попробовал свое приложение laravel, и его система проверки подлинности по умолчанию по умолчанию может быть захвачена сессией.

Таким образом, основная проблема - это все мои действия по проверке подлинности в сеансе, и я не знаю другого метода для использования аутентификации без использования сеанса.

Если у кого-нибудь есть идеи по улучшению безопасности моего веб-приложения, пожалуйста, помогите мне.

Заранее спасибо.

+0

Вы действительно пробовали? «Если злоумышленник получил значение ci_session и мой ip, он может легко войти на мой сайт без каких-либо учетных данных» –

+0

@blacmoon да сэр. Но в моей ситуации я вручную копирую значение cookie ci_session в своем ноутбуке и вставляю его в файл cookie ci_session на своем рабочем столе, чтобы обойти логин. Обе системы public ip одинаковы, поэтому блокировка ip не работает. Поэтому, если какое-то вредоносное ПО получает ci_session cookie и IP-адрес системы, мое приложение может быть повреждено. –

+0

Попробуйте вариант базы данных при сохранении сеанса. может помочь. –

ответ

1

Предотвращение фиксации сеанса означает, что идентификатор сеанса не был украден.

Вы только провалили , если есть способ для его кражи. Беспокойство о том, что происходит после этого, бессмысленно.

Если злоумышленник получил значение ci_session и мой ip, он может легко войти на мой сайт без каких-либо учетных данных.

Никто не может просто изменить свой IP-адрес, чтобы ваш ...

+0

Если злоумышленник подключается к моему домашнему интернету, он получает такой же публичный IP-адрес. Теперь, если вы каким-то образом украли сессионный файл cookie с моего ноутбука, он может просто скопировать и вставить его на свой ноутбук, чтобы получить доступ к моему программному обеспечению. Вышеупомянутый сценарий проверял меня, и он работает, даже я включаю $ config ['sess_match_ip'] = TRUE; , –

+1

Это абсурдный сценарий, о котором нужно беспокоиться ... – Narf

1

Вы можете сохранить информацию для посетителей в сессии в качестве платформы ОС и браузера и сравнить его при каждой загрузке страницы.

У CI есть библиотека User Agent, которая помогает в этом.

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

У CI есть помощник Cookie, который поможет в этом.

Восстановить идентификатор сеанса за небольшой период.

Если какие-либо сравниваемые данные неверны, вы можете выйти из системы. Уничтожьте сеанс и удалите файл cookie. Если необходимо, сообщите об этом.

Это предотвратит, если кто-то взломает вас из вашей сети, получая ваш идентификатор сеанса. И предостережение с социальным уговором.

Я искал эту же проблему.