Способы затруднить взлом / внедрение / манипулирование Javascript-кодом? - PullRequest
7 голосов
/ 07 июля 2010

Существуют ли способы предотвратить или затруднить для кого-то внедрение Javascript и манипулирование переменными или функциями доступа?У меня была мысль изменить случайные имена всех переменных при каждой перезагрузке, чтобы каждый раз переписывать сценарий вредоносного ПО?Или есть другие, менее болезненные способы?

Я понимаю, что в конце концов кто-то взломает его, но я хотел бы знать, как затруднить воспроизведение действия, чтобы люди не публиковалибукмарклет или что-то подобное для всех.Мне все равно, найдут ли эксперты свой путь в коде, но я бы хотел, чтобы он был немного сложнее, чем javascript:d=0;

Если вы знаете способы сделать взлом Javascript немного сложнее, пожалуйста,пиши те.

Ответы [ 4 ]

24 голосов
/ 07 июля 2010

Примите, что ваш javascript будет «манипулировать» и обеспечьте его на стороне сервера.По сути, вы ничего не можете сделать, чтобы люди не возились с клиентом.

13 голосов
/ 07 июля 2010

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

(function(){
    var x = 1;
    var y = 2;
    var z = "A am z";
    var clickHandler = function() {
        alert('You clicked the body');
    };
    document.getElementsByTagName('body')[0].addEventListener('click',clickHandler,true);
}());

[РЕДАКТИРОВАТЬ] Приведенный выше код восприимчив к пользователю, перезаписывающему любые глобально доступные объекты, методы, события или свойства, которые вы используете (в данном случае, document, getElementsByTagName иaddEventListener), поэтому, если вы действительно параноик, вы можете скопировать их в область своих функций до того, как страница загрузится, и пользователь сможет перезаписать их.Использование addEventListener - хорошая идея, поскольку в отличие от события body.onclick его нельзя удалить или перезаписать извне функции.

0 голосов
/ 17 июля 2010

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

Хотя вам нужно подумать о том, чтобы сделать сайт безопасным на сервере и безопасным для других пользователей. Это означает (как минимум):

  1. Проверка / проверка каждого запроса и входных параметров на сервере, чтобы пользователи не могли изменять какие-либо данные на стороне сервера, вызывая «взломанные» клиентские функции, которые вы написали.

  2. Проверьте все данные, которые вы выводите на экран, которые были получены при вводе пользователем. Другие пользователи могли вставить клиентские сценарии, которые опасны для вашего сайта и особенно опасны для других пользователей вашего сайта. (Если вы используете .net, проверьте библиотеку AntiXSS)

0 голосов
/ 16 июля 2010

Запутывание и минимизация должны усложнить взлом, но я согласен с спонсором.

...