Ответы:
Обфускация - это средство «скрыть» реальное значение и намерение вашего JavaScript-кода. Некоторые сайты используют его как препятствие для людей, которые хотят скопировать / заимствовать свой код. Другие сайты используют его как средство, чтобы скрыть реальное намерение кода.
Некоторые формы затемнения:
Затенение само по себе не является злом, но его можно использовать, чтобы скрыть злой умысел, и, вероятно, именно против этого возражал AVG. Он обнаружил настолько много неясного, что не мог определить, пытается ли JavaScript сделать что-то, что он пытается предотвратить. Таким образом, он объявил код небезопасным по умолчанию, поскольку он не может проверить, что код выглядит нормально.
1
и 2
также сделаны компрессорами JavaScript. Компрессоры запутывают код как побочный эффект, но это не является их главной целью; их основная цель - уменьшить размер JavaScript, уменьшить пропускную способность.
Запутывание относится к сокрытию предполагаемого значения чего-либо.
В этом случае четко читаемый фрагмент JavaScript, такой как
window.onload = function() { alert("Hello " + username) };
может быть заменен
var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
"\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
function (){alert(_0xc5b2[1]+username);} ;
или даже
eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
"%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
"%29%3B%7D%20%3B"));
Все три фрагмента кода делают одно и то же, но только чтение первого позволит вам легко понять его намерения.
Очевидно, AVG пытается понять назначение кода JavaScript, прежде чем разрешить его выполнение. Когда код будет запутан, AVG, вероятно, потерпит неудачу. Отсюда и предупреждение.
При этом некоторые веб-сайты запутывают свой JavaScript не из-за злых намерений, а из-за того, что им трудно украсть их работу. Запутывание обычно бесполезно, если используется для этой цели, но дело в том, что запутывание не обязательно означает плохие намерения.