Включите что-то подобное на своей странице входа в систему (убедитесь, что для заголовка X-FRAME-OPTIONS установлено значение DENY), изменив "Ваш ожидаемый источник" на ... ну, я уверен, вы можете понять это:
var inP = true, t = self, l = "loc" + "ation", o = "o" + "rigin", ex = "Your " + "expected" + " origin", db = document, b = "bod" + "y", h = "in" + "ner" + "HTML";
try {
inP = t[l][o] != ex;
} catch (e) {
inP = true;
}
if (inP) {
db[b][h] = "<p>For security reasons, this site cannot be viewed though a proxy. Please access the site directly at <a href="+ex+" target='_top'>" + ex + "</a>.</p>";
throw new Error("Prevent any other code in this block from running.");
}
Запутанно пытаться запретить прокси-серверу замечать, что вы делаете, но просто чтобы смешать его с некоторым JavaScript, жизненно важным для запуска страницы (как тот, который добавляет токен CSRF в форму входа).Таким образом, они не могут просто заблокировать файл.(Но сделайте случайное запутывание, чтобы сорвать попытки отфильтровать или проанализировать файл в прокси).
Добавить тег <noscript>
, объясняющий, что у вас есть , чтобы JavaScript был включен на этой странице для безопасностипричины.
Это не пуленепробиваемый (кто-то действительно определит, как выяснить, как обойти ваше запутывание), но это должно остановить детишек сценария, которые только что установили Evilginx из учебника.
Дальнейшие улучшения: реализует WebAuth и рекомендует всем вашим клиентам его использовать.Используйте заголовок Feature Policy и / или JavaScript, чтобы установить API WebUSB на undefined
, потому что вы почти наверняка его не используете и есть атаки на WebAuth на основе WebUSB.