Фрагмент кода Javascript для защиты от атаки кражи входных данных



Я хочу, чтобы код JavaScript защищал элементы веб-страницы от атаки воровства ввода. Я хочу, чтобы нажатия клавиш перехватывались зарегистрированными обработчиками событий и маскировались от JavaScript на веб-странице, чтобы предотвратить различные атаки JavaScript.

598   4  

4 ответов:

Вы просите код JavaScript, который перехватывал бы нажатия клавиш таким образом, чтобы никакой другой код JavaScript не мог перехватывать нажатия клавиш, что, к сожалению, невозможно, потому что ваш код должен быть привилегированным по сравнению с другим кодом, а это не так, как работает JavaScript.

Кейлоггеры-это серьезная проблема, которая не может быть решена на прикладном уровне, особенно с использованием JavaScript, если злоумышленник, от которого вы пытаетесь защититься, уже управляет JavaScript в первом место. Даже если вы могли бы сделать это, то вы, вероятно, все равно должны отправить эти нажатия клавиш куда-то, и другой вредоносный код JavaScript может перехватить его при передаче. Не существует простого способа защиты от кейлоггеров. Для начала прочтите статью Trusteer Anti-Keylogger Myths.

Вы должны убедиться, что ни один вредоносный код JavaScript не может быть выполнен без ведома и против воли ваших пользователей (потому что ваши пользователи всегда смогут выполнить произвольный код). код в контексте вашей страницы, используя букмарклеты, если ничего больше, и вы просто должны иметь дело с ним). Если вы включаете рекламу или некоторые сторонние виджеты на своих страницах, то используйте такие технологии, как Caja или ADsafe.

Обновление: я только что прочитал комментарий, который вы только что опубликовали, объясняя, чего вы пытаетесь достичь. Если вы хотите написать плагин для браузера, который остановит злой код от получения нажатий клавиш, позволяя только хорошему коду получить после нажатия клавиш возникает более серьезная проблема: как отличить хороший код от плохого? Все это просто функции, это не так, как у них есть некоторые хорошие свойства, установленные в true или false. Максимум, что вы можете сделать, это полностью заблокировать события keydown и keypress для полей паролей, но кроме взлома большого количества кода, сообщающего пользователям о прочности их паролей и тому подобных вещах, вы действительно ничего не выиграете, потому что злоумышленник может легко прочитать значение пароля по адресу некоторые интервалы времени даже не полагаются на события клавиатуры. Если вы заблокируете возможность чтения значения пароля, то вы взломаете код, который проверяет, совпадают ли две версии пароля и тому подобное, и все равно ничего не добьетесь, потому что злоумышленник может просто прочитать его, когда форма отправлена, или запрос AJAX отправлен, и так далее, и тому подобное, до тошноты...

Вы, вероятно, не можете.

Любой кейлоггер, достойный своего обеда, будет сидеть между драйвером клавиатуры и приложением. К тому времени, когда нажатие клавиши доберется до окна браузера и вашего скрипта - который находится справа в конце конвейера - логирование, скорее всего, уже произойдет.

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

Я не уверен, что вы хотите этого, вы имеете в виду что-то вроде этого?

onkeydown="function(){return false;}"

Надеюсь, это поможет.

Обычно входы могут быть перехвачены из следующих событий DOM

window.onkeydown
window.onkeypress
window.onkeyup
document.onkeydown
document.onkeypress
document.onkeyup

Что вы можете сделать, чтобы сделать его неопределенным с помощью скрипта, подобного этому JavaScript Keylogger & Anti-Keylogger это гарантирует, что нет действий, назначенных этим событиям.

Это будет что-то вроде этого

// this will attach a listener to the onkeypress() event
document.onkeypress = function(e){ 
window.keyp = "";
    window.keyp += e.key;  //we store the key into a window variable to create the complete word
    if(e.code === "Space") // we check for when space is pressed to print the word out in console
    { 
        console.log(window.keyp); //print
        window.keyp = ""; // we made the window variable null again
    } 
};

//to overcome this we can have someting as AntiKeylogger and call it when the page is loaded
//disables the keystroke logging 
function AntiKeylogger(){
    window.onkeydown = undefined;
    window.onkeypress = undefined;
    window.onkeyup = undefined;
    document.onkeydown = undefined;
    document.onkeypress = undefined;
    document.onkeyup = undefined;
}();

Но результат отличается и зависит от того, когда вы его выполняете, если вредоносный скрипт выполняется после задержки или одного события, это не поможет. Маскировка включает в себя захват события впереди всех, что, кажется, не представляется возможным на данный момент.

Comments

    Ничего не найдено.