JavaScript 난독화란 무엇이며 왜 위협이 됩니까?

JavaScript 난독화란 무엇이며 왜 위협이 됩니까?

AVG는 최근 다음으로 인해 웹페이지가 차단되었다고 말했습니다.자바스크립트 난독화.

웹페이지가 차단된 이유는 무엇이며, 이는 정확히 무엇을 의미합니까?

답변1

난독화는 자바스크립트 코드의 실제 의미와 의도를 "모호하게" 하는 수단입니다. 일부 사이트에서는 코드를 복사/대여하려는 사람들에게 장애물로 이를 사용합니다. 다른 사이트에서는 이를 코드의 실제 의도를 숨기는 수단으로 사용합니다.

일부 형태의 모호화:

  1. 코드를 읽기 어렵고 이해하기 어렵게 만들기 위해 변수 이름을 의미 없는 짧은 이름으로 자동 변경합니다.
  2. 추가 공백과 줄 바꿈을 모두 제거하여 코드가 하나의 거대한 긴 줄이 되도록 합니다.
  3. 코드의 첫 번째 단계가 실행되어 의도된 작업을 수행하기 위해 실행되는 실제 코드를 생성하도록 코드의 일부를 자체 생성하도록 만듭니다.
  4. 실행될 실제 코드를 구성하기 위해 일반 자바스크립트 코드 대신 eval과 결합된 문자 코드 및 문자열 조작을 사용합니다.

모호함 자체는 악한 것이 아니지만 악한 의도를 숨기려는 데 사용될 수 있으며 아마도 AVG가 반대한 것일 것입니다. 너무 많은 모호함을 감지하여 자바스크립트가 방지하려는 작업을 시도하고 있는지 알 수 없었습니다. 따라서 코드가 괜찮은지 확인할 수 없기 때문에 기본적으로 코드가 안전하지 않은 것으로 선언되었습니다.

답변2

난독화란 의도한 의미를 숨기는 것을 말합니다.

이 경우 다음과 같이 명확하게 읽을 수 있는 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를 난독화합니다. 난독화는 일반적으로 이러한 목적으로 사용되면 쓸모가 없지만 요점은 난독화가 반드시 나쁜 의도를 의미하지는 않는다는 것입니다.

관련 정보