Избегайте удаления cookie-файлов человеком посередине в последующих conexiones - PullRequest
0 голосов
/ 21 сентября 2018

Представьте себе сценарий плохого случая, когда злоумышленник может настроить человека посередине, очевидно, для незащищенных соединений (HTTP: 80)

при первом соединении:

1- cliente request example.com
2- server respond 301 to httpS::/example.com
3- client request https://example.com
4- server send document and a secured cookie (GOOD-COOKIE)
5- client send next request with GOOD-COOKIE
6- server respond based on GOOD-COOKIE

(несколько дней спустя клиент снова подключается из того же браузера)

1- client request example.com
X- Attacker intercepts and send document with FAKE-COOKIE (same-name *) and 301 to https
X- client overwrite the GOOD-COOKIE with the FAKE-COOKIE
3- client request https://example.com with FAKE-COOKIE
4- server respond based on FAKE-COOKIE

. * ПРИМЕЧАНИЕ: cookie с тем же именем, даже не защищенный (другой флаг), передаваемый по http от злоумышленника

, в то время как безопасные куки не передаются по протоколу HTTP, на самом деле их можно перезаписать с помощью файла cookie с тем же именем, полученного из соединения, отличного от https: sad-very-sad-emoticon

ни безопасные, ни httpOnly флаги не решаютв этом вопросе, ни HSTS, ни ...

какая-либо тактика для решения этой проблемы?

(мы разрабатываем в файле node.js, поэтому не применяются ограничения apache / iis / etc ..)

Пример файла cookie для этого случая

GOOD-COOKIE (header response)
Set-Cookie: myCookie=myValueCookie; Secure; Path=/

FAKE-COOKIE (header attacker response) Changed from original that server sends
Set-Cookie: myCookie=myValueCookie; Path=/

1 Ответ

0 голосов
/ 22 сентября 2018

Ваша лучшая ставка, вероятно, HSTS.Не уверен, почему ты сказал, что это не защищает тебя здесь?Он пропустит соединение по небезопасному протоколу и сразу перейдет к HTTPS, не открывая куки.

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Это так же просто, как отправка заголовка, сообщающего браузеру только доступ к вашемусайт по SSL, если вы укажете в max-age части.

response.setHeader('Strict-Transport-Security', 'max-age=31536000');

(31536000 секунд = один год)

Не требует никакихспециальные серверы или конфигурации.

Кроме того, вы можете создать набор правил для HTTPS Everywhere .Это спасет только несколько пользователей, но почему бы и нет?

И наконец, убедитесь, что ваша установка SSL надежна. SSLLabs это здорово!

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