А тут уже нужна разъяснительная работа с пользователями. К счастью, большинство браузеров наличие HTTPS стараются показать очень заметно. Соответственно, стоит на форме авторизации добавить большую картинку-скриншот и красную надпись «Проверьте, что зелёный замочек на месте прежде, чем вводить пароль». Многие пользователи не помнят адрес сайта (и каждый раз заходят, как в анекдотах, вбивая поисковый запрос в поисковик), поэтому не станут проверять правильность адреса, а вот наличие пиктограммы проверить легко. К тому же злоумышленнику будет труднее получить сертификат на домен слишком похожий на популярный сайт, так что наличие индикатора HTTPS отсеет множество атак.
Это-то что поменяет? Если условный Василий Петрович наберет в браузере www.mysecretsite.ru, а ему придет подменённый ответ от DNS-сервера, что сайт имеет ip 2.2.2.2 (вместо положенных 1.1.1.1)? Кто выполнит HSTS? Правильно, никто.
Я же специально ссылку на DNSSEC привёл. Если ему придёт подменённый ответ, то после браузер сообщит об ошибке после того, как не сможет проверить подпись.
Это если DNSSEC вообще проверяется. Когда я пытался играться с BIND, я обнаружил, что не могу попасть на очень многие сайты в инете — попросту из-за неверных подписей.
Но ведь при дефолтной настройке все эти сайты браузером открывались!
certificate pinning +HSTS +HSTS preload и/или https everywhere +password manager = нужно не только подделать DNS но и сертификат, иначе менеджер паролей (напр. KeePass) не отдаст пароль.
Да, много технологий и всевозможных «но», и тем не менее я считаю этот сетап достаточно безопасным.
Зачем так сложно? Расширение настолько глупое, что банального iframe достаточно: jsfiddle.
Первый блок — максимально наивный фишинг, обычное поле для ввода пароля, расширение его ловит.
Если то же самое засунуть в iframe — второй блок, то уже не ловит.
Я не предполагал, что оно настолько просто сдастся, поэтому сначала я сделал несколько iframe, которые подменяют друг друга на ходу, таким образом весь пароль на каком-то из них не вводится — третий блок, но, как оказалось, это был даже перебор.
Не пользуюсь хромом, поэтому не знаю визуальных особенностей его работы, но, разве, если перезагружать страницу после каждого символа, то она не будет мерцать и выглядеть подозрительно?
Pinning спасёт, если подменить accounts.google.com. Более того, поддельный сертификат просто не дадут, потому что злоумышленник не сможет подтвердить владение доменом. Но ведь можно создать accounts.google123.com (или какой домен будет свободен) — невнимательный пользователь не заметит разницы.
Фишингом занимаются не для развлечения, а ради заработка. А раз так, то вполне нормальны начальные вложения (всё равно придётся покупать домен и оплачивать хостинг). А раз так, то сертификат можно и купить — бесплатность не особо то спасёт от профессионалов. Вопрос в том, будут ли давать сертификаты на домены, похожие сайты на популярные сервисов.
Расширение от Google для Chrome, защищающее от фишинга, оказалось бесполезным