Odpowiedzi:
Zaciemnianie jest sposobem na „zaciemnienie” prawdziwego znaczenia i intencji twojego kodu javascript. Niektóre strony wykorzystują go jako przeszkodę dla osób, które chcą skopiować / pożyczyć swój kod. Inne strony używają go jako środka do ukrywania rzeczywistej intencji kodu.
Niektóre formy zaciemnienia:
Zacieranie się nie jest samo w sobie złem, ale może być użyte do ukrycia złych zamiarów i prawdopodobnie właśnie temu AVG się sprzeciwił. Wykrył tak wiele zaciemnienia, że nie był w stanie stwierdzić, czy javascript próbuje zrobić coś, czemu chce zapobiec. Jako taki domyślnie zadeklarował kod jako niebezpieczny, ponieważ nie może zweryfikować poprawności kodu.
1
i 2
są również wykonywane przez kompresory javascript. Sprężarki zaciemniają kod jako efekt uboczny, ale nie jest to ich głównym celem; ich głównym celem jest zmniejszenie javascript, aby zmniejszyć przepustowość.
Zaciemnianie odnosi się do ukrywania zamierzonego znaczenia czegoś.
W tym przypadku czytelny fragment kodu JavaScript, taki jak
window.onload = function() { alert("Hello " + username) };
można zastąpić
var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
"\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
function (){alert(_0xc5b2[1]+username);} ;
lub nawet
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"));
Wszystkie trzy fragmenty kodu robią dokładnie to samo, ale tylko czytanie pierwszego pozwoli ci łatwo zrozumieć jego intencje.
Najwyraźniej AVG próbuje zrozumieć cel kodu JavaScript przed umożliwieniem jego wykonania. Gdy kod jest zaciemniony, AVG prawdopodobnie zawiedzie. Stąd ostrzeżenie.
To powiedziawszy, niektóre strony zaciemniają swój JavaScript nie z powodu złych intencji, ale utrudniają kradzież ich pracy. Zaciemnianie jest zwykle bezużyteczne, jeśli jest używane do tego celu, ale chodzi o to, że zaciemnianie niekoniecznie oznacza złe intencje.