На мой взгляд, ваша основная проблема заключается в том, что любые меры защиты прикладного уровня, которые вы предприняли для смягчения этой атаки, могут быть обойдены злоумышленником, если предположить, что это действительно вредоносная атака, совершенная компетентным противником.
На мой взгляд, вам определенно следует использовать HTTPS, который в принципе позволил бы пользователю точно подтвердить, обращаются ли они к нужному серверу, но это зависит от того, знает ли пользователь об этом.В настоящее время некоторые браузеры отображают в строке URL дополнительную информацию о том, какому юридическому лицу принадлежит сертификат SSL, что может помочь, поскольку маловероятно, что злоумышленник сможет убедить законный центр сертификации выдать сертификат на ваше имя.
В некоторых других комментариях говорится, что HTTPS может быть перехвачен промежуточными прокси-серверами, что на самом деле неверно.С HTTPS клиент отправляет запрос CONNECT на прокси-сервер, который туннелирует весь будущий трафик напрямую на исходный сервер, не имея возможности прочитать его.Если мы предположим, что этот прокси-сервер полностью настроен и является вредоносным, то он может прервать сеанс SSL и перехватить трафик, но он может сделать это только со своим собственным сертификатом SSL, а не с вашим.Этот сертификат будет либо самоподписанным (в этом случае клиенты получат много предупреждающих сообщений), либо подлинным сертификатом, выданным центром сертификации, в этом случае у него будет неправильное имя юридического лица, и вы сможете вернуться назад.в орган по сертификации, отозвать сертификат и, возможно, попросить полицию принять меры против владельца сертификата, если у вас есть обоснованные подозрения, что они являются фишингом.
Другая вещь, о которой я могу подумать, могла бы смягчитьэта угроза в некоторой степени будет заключаться в реализации функциональности одноразового пароля, либо с использованием аппаратного / программного токена, либо с помощью (моего личного фаворита) SMS-сообщения, отправляемого на телефон пользователя при входе в систему.Не позволяйте злоумышленнику получить доступ к сеансу один раз , но он должен помешать им войти в систему в будущем.Вы можете дополнительно защитить пользователей, потребовав еще один одноразовый пароль, прежде чем позволять им просматривать / редактировать особо важные детали.