Câu trả lời:
Obfuscation là một phương tiện "che khuất" ý nghĩa thực sự và ý định của mã javascript của bạn. Một số trang web sử dụng nó như một trở ngại cho những người muốn sao chép / mượn mã của họ. Các trang web khác sử dụng nó như một phương tiện để che giấu ý định thực sự của mã.
Một số hình thức che khuất:
Bản thân che khuất không phải là xấu xa, nhưng nó có thể được sử dụng để cố gắng che giấu ý định xấu xa và đó có lẽ là điều mà AVG đang phản đối. Nó phát hiện quá nhiều sự che khuất đến mức không thể biết được liệu javascript có đang cố làm điều gì đó mà nó đang cố gắng ngăn chặn hay không. Do đó, nó đã tuyên bố mã là không an toàn theo mặc định vì nó không thể xác minh rằng mã có vẻ ổn.
1
và 2
cũng được thực hiện bởi các trình nén javascript. Máy nén làm xáo trộn mã như một tác dụng phụ, nhưng đó không phải là mục đích chính của chúng; Mục đích chính của chúng là làm cho javascript nhỏ hơn, để giảm băng thông.
Obfuscation đề cập đến việc che giấu ý nghĩa dự định của một cái gì đó.
Trong trường hợp này, một đoạn mã JavaScript dễ đọc, chẳng hạn như
window.onload = function() { alert("Hello " + username) };
có thể được thay thế bởi
var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
"\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
function (){alert(_0xc5b2[1]+username);} ;
hoặc thậm chí
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"));
Tất cả ba đoạn mã làm cùng một điều chính xác, nhưng chỉ đọc phần đầu tiên sẽ cho phép bạn hiểu ý định của nó một cách dễ dàng.
Rõ ràng, AVG cố gắng tìm hiểu mục đích của mã JavaScript trước khi cho phép thực thi. Khi mã bị xáo trộn, AVG có thể sẽ thất bại. Do đó cảnh báo.
Điều đó đang được nói, một số trang web làm xáo trộn JavaScript của họ không phải vì mục đích xấu, mà để gây khó khăn cho việc đánh cắp công việc của họ. Obfuscation thường vô dụng nếu được sử dụng cho mục đích này, nhưng vấn đề là obfuscation không nhất thiết có nghĩa là mục đích xấu.