избегать перехвата сессии для веб-приложений - PullRequest
4 голосов
/ 18 августа 2010

Я читал о статьях Session Hijacking и хотел бы получить дополнительную информацию, связанную с этим. В настоящее время мое веб-приложение, разработанное в ASP.NET, использует режим Cookieless = true для состояния сеанса. Мы используем HTTPS, который является безопасным соединением, которое уменьшит перехват сеансов. Я знаю, что когда мы используем Cookieless, идентификатор сеанса внедряется в URL, что иногда может быть опасным, если пользователь передаст этот URL кому-либо, а другой пользователь сможет войти в систему, если сеанс еще жив. Так что просто хочу знать, HTTPS более чем достаточно, или я должен что-то предпринять, чтобы обезопасить свое веб-приложение.

Ответы [ 4 ]

4 голосов
/ 18 августа 2010

Вы можете завершить сеанс, если IP-адрес клиента изменится, и заставить их повторно войти в систему.

4 голосов
/ 18 августа 2010

HTTPS защищает только от захвата и изменения данных между клиентом и сервером (или сервером и клиентом).Это не поможет, если пользователь поделится ссылкой с друзьями (или хакерами :))

В качестве опции вы можете сохранить IP-адрес клиента в переменных сеанса при запуске сеанса и проверять каждый запрос на наличие текущего IP-адреса и IP-адреса сеансаподобные.Это обеспечит немного большую безопасность.

2 голосов
/ 18 августа 2010

Учтите также, что ваш идентификатор сессии, возможно, будет показан посторонним в заголовке HTTP_REFERER.HTTP_REFERER будет содержать URL последней доступной страницы, включая идентификатор сеанса в параметрах URL, если пользователь переходит по ссылке, которая открывается в том же окне браузера.Это будет проблемой, если ссылка будет указана за пределами вашего сервиса.

2 голосов
/ 18 августа 2010

Перехват сеанса может происходить несколькими способами. HTTPS предотвращает прослушивание, но XSS является наиболее распространенной атакой. Вы можете использовать httponlycookies, чтобы предотвратить атаку xss доступа к document.cookie, но тогда злоумышленник может просто «покататься» на сеансе xmlhttprequest (червь Sammy сделал это с MySpace). Говоря о сессионной езде, вы должны посмотреть на CSRF . Даже SQL-инъекция может использоваться для захвата сеанса, если вы храните идентификатор сеанса в базе данных, но не все веб-приложения делают это.

Используйте httponlycookies, убедитесь, что они только https, используйте https для всего. Не используйте сеансы asp.net "без файлов cookie" , это делает вас уязвимым для Фиксация сеанса . Идентификаторы сессии всегда должны передаваться с использованием cookie и никогда не передаваться как GET или POST. Вы можете рассмотреть , используя STS .

...