JavaScript: 우리는 스크립트를 눈에 띄지 않게 숨깁니다. 예제와 같은 것 스크립트 디버깅을 위해 페이지의 소스 코드를 보는 방법

나타샤 2011년 10월 31일 오전 3시 10분

JavaScript: 눈에 띄지 않도록 스크립트 숨기기

  • 목재실 *

비현실적으로 아름다운 메뉴 모양을 구현하거나 매 두 번째 사이트에서 곧 보고 싶지 않은 다른 작업을 수행하는 스크립트의 페이지에서 낯선 사람에게 숨기고 싶었던 적이 있습니까?
그렇다면 이 기사에서 설명하는 방법이 코드 난독화와 함께 유용할 것입니다. 동시에 그 방법이 100%는 아니지만 대부분의 비전문가들과 일부 전문가들로부터 보호받을 수 있다는 점에 대해선 바로 유보하겠습니다.

이론

숨겨야 하는 secret.js 스크립트가 있는 nojs.php 페이지가 있다고 가정해 보겠습니다. 브라우저와 사용자는 다음과 같은 방법으로 서버에서 스크립트를 가져올 수 있습니다.
  1. 페이지에 직접 배치되거나 DOM을 사용하여 로드된 스크립트 로드
  2. 창에서 스크립트 보기 페이지의 소스 코드;
  3. 모든 파일이 있는 페이지를 하드 드라이브에 저장합니다.
  4. 주소 표시줄에 직접 URL을 입력합니다.
첫 번째 경우 브라우저는 HTTP 헤더 HTTP_REFERER를 전달해야 합니다.
두 번째 및 세 번째 경우에는 모든 브라우저에서 전송되지 않습니다(Chrome, FireFox는 캐시에서 이전에 로드된 스크립트를 발행하고 Opera, IE는 스크립트를 다시 다운로드하지만 참조자를 보내지 않음).
네 번째 경우에는 4개의 브라우저에서 참조자를 전달하지 않습니다.
요청에 리퍼러 헤더가 있는지 확인하여 JavaScript를 동적으로 발행하면 Opera와 IE로부터 즉시 자신을 보호할 수 있지만 Crome과 Firefox의 경우 까다로운 문제를 해결해야 합니다. 먼저 하나의 스크립트를 다운로드하고 다른 스크립트를 다운로드하고 두 다운로드 모두 http-referer가 있는지 확인합니다. document.createElement("스크립트") 페이지에서 스크립트를 동적으로 생성한 다음 페이지에서 삭제하면 스크립트가 평소와 같이 작동하지만 저장되지 않는다는 것이 과학적으로 입증되었습니다.

관행

nojs.php
이 페이지는 script1.php를 다운로드하는 것을 목표로 합니다.
JS 찾기
10초 후, 숨겨진 스크립트의 작업이 알레르기 형태로 표시되어야 하며, 이벤트도 떨어지지 않았는지 확인하기 위해 경고 후 링크를 ​​클릭합니다. 이 링크를 통해 숨겨진 스크립트를 볼 수 있습니다.
스크립트1.php
그 작업은 참조 헤더가 있는 경우 script2.php를 동적으로 로드하는 것입니다. 숨겨진 스크립트의 대략적인 실행 시간에 따라 타임아웃을 줄일 수 있습니다.
스크립트2.php
해당 작업: 참조 헤더가 있는 경우 최종 스크립트를 발행합니다.

결과

결과적으로 테스트한 4개의 브라우저를 통해 소스 코드에서 페이지를 볼 수 없으며 숨겨진 스크립트를 다운로드하거나 저장할 수 없습니다. 일반적으로 두 가지 방법으로 볼 수 있습니다.
  • script2.php로 직접 연결되고 당사 사이트 페이지에 있는 링크를 따르십시오.
  • 리퍼러 헤더가 지정된 http 요청의 형성.
다음과 같은 방법으로 숨기기의 효율성을 높일 수 있습니다.
  1. mod-rewrite를 사용하여 서버로 이동하는 script1.js 및 script2.js를 각각 script1.php 및 script2.php로 교체하여 페이지에 모두에게 친숙한 js 파일이 포함되도록 하십시오. php는 눈에 띄기 때문입니다.
  2. 가상의 스크립트를 가능한 한 복잡하고 믿을 수 있고 혼란스럽게 만들어서 그것을 분해하려는 사람이 자신이 속았다는 것을 깨닫기 전에 많은 고통을 겪을 수 있도록 하십시오.
  3. 코드 난독화.

비현실적으로 아름다운 메뉴 모양을 구현하거나 매 두 번째 사이트에서 곧 보고 싶지 않은 다른 작업을 수행하는 스크립트의 페이지에서 낯선 사람에게 숨기고 싶었던 적이 있습니까?
그렇다면 이 기사에서 설명하는 방법이 코드 난독화와 함께 유용할 것입니다. 동시에 그 방법이 100%는 아니지만 대부분의 비전문가들과 일부 전문가들로부터 보호받을 수 있다는 점에 대해선 바로 유보하겠습니다.

이론

숨겨야 하는 secret.js 스크립트가 있는 nojs.php 페이지가 있다고 가정해 보겠습니다. 브라우저와 사용자는 다음과 같은 방법으로 서버에서 스크립트를 가져올 수 있습니다.
  1. 페이지에 직접 배치되거나 DOM을 사용하여 로드된 스크립트 로드
  2. 창에서 스크립트 보기 페이지의 소스 코드;
  3. 모든 파일이 있는 페이지를 하드 드라이브에 저장합니다.
  4. 주소 표시줄에 직접 URL을 입력합니다.
첫 번째 경우 브라우저는 HTTP 헤더 HTTP_REFERER를 전달해야 합니다.
두 번째 및 세 번째 경우에는 모든 브라우저에서 전송되지 않습니다(Chrome, FireFox는 캐시에서 이전에 로드된 스크립트를 발행하고 Opera, IE는 스크립트를 다시 다운로드하지만 참조자를 보내지 않음).
네 번째 경우에는 4개의 브라우저에서 참조자를 전달하지 않습니다.
요청에 리퍼러 헤더가 있는지 확인하여 JavaScript를 동적으로 발행하면 Opera와 IE로부터 즉시 자신을 보호할 수 있지만 Crome과 Firefox의 경우 까다로운 문제를 해결해야 합니다. 먼저 하나의 스크립트를 다운로드하고 다른 스크립트를 다운로드하고 두 다운로드 모두 http-referer가 있는지 확인합니다. document.createElement("스크립트") 페이지에서 스크립트를 동적으로 생성한 다음 페이지에서 삭제하면 스크립트가 평소와 같이 작동하지만 저장되지 않는다는 것이 과학적으로 입증되었습니다.

관행

nojs.php
이 페이지는 script1.php를 다운로드하는 것을 목표로 합니다.
JS 찾기
10초 후, 숨겨진 스크립트의 작업이 알레르기 형태로 표시되어야 하며, 이벤트도 떨어지지 않았는지 확인하기 위해 경고 후 링크를 ​​클릭합니다. 이 링크를 통해 숨겨진 스크립트를 볼 수 있습니다.
스크립트1.php
그 작업은 참조 헤더가 있는 경우 script2.php를 동적으로 로드하는 것입니다. 숨겨진 스크립트의 대략적인 실행 시간에 따라 타임아웃을 줄일 수 있습니다.
스크립트2.php
해당 작업: 참조 헤더가 있는 경우 최종 스크립트를 발행합니다.

결과

결과적으로 테스트한 4개의 브라우저를 통해 소스 코드에서 페이지를 볼 수 없으며 숨겨진 스크립트를 다운로드하거나 저장할 수 없습니다. 일반적으로 두 가지 방법으로 볼 수 있습니다.
  • script2.php로 직접 연결되고 당사 사이트 페이지에 있는 링크를 따르십시오.
  • 리퍼러 헤더가 지정된 http 요청의 형성.
다음과 같은 방법으로 숨기기의 효율성을 높일 수 있습니다.
  1. mod-rewrite를 사용하여 서버로 이동하는 script1.js 및 script2.js를 각각 script1.php 및 script2.php로 교체하여 페이지에 모두에게 친숙한 js 파일이 포함되도록 하십시오. php는 눈에 띄기 때문입니다.
  2. 가상의 스크립트를 가능한 한 복잡하고 믿을 수 있고 혼란스럽게 만들어서 그것을 분해하려는 사람이 자신이 속았다는 것을 깨닫기 전에 많은 고통을 겪을 수 있도록 하십시오.
  3. 코드 난독화.

따라서 우리는 JavaScript 스크립팅의 주요 용도가 인터넷이라는 것을 이미 알아냈습니다. 최소한 일반적인 용어로 알고 있기를 바랍니다. 나는 이것에 대해 이야기하지 않을 것입니다.

가장 단순한 인터넷 사이트는 하나 이상의 웹 페이지(웹 페이지)로 구성됩니다.

JavaScript 스크립트를 사용하려면 스크립트 소스 코드를 웹 페이지에 어떻게든 포함해야 합니다.

오늘 알려드릴 내용은 이것입니다.

따라서 HTML 페이지의 본문에 있는 스크립트는 거의 모든 곳에 삽입할 수 있습니다.

일부 기능을 삽입하면 페이지 헤더에 배치하는 것이 좋습니다. 즉, 그 사이 어딘가에

... .

스크립트 자체는 태그 사이에 배치됩니다.

여기에서 여는 태그의 매개변수로

내가 말했듯이 스크립트는 페이지의 아무 곳에나 삽입할 수 있습니다. 그러나 태그 사이에 이 작업을 수행하면 스크립트의 소스 코드가 사용자에게 표시됩니다. 물론 이것은 일반적으로 불필요합니다.

문자로 소스 코드브라우저에 표시되지 않은 경우 소스 코드는 HTML 마크업 주석으로 작성되어야 합니다.

즉, 다음과 같습니다.

그러나 한 가지 트릭이 더 있습니다. 특히 멍청한 브라우저는 -> 기호를 이해하지 못합니다. 따라서 코드가 모든 브라우저에서 사용자에게 표시되지 않도록 보장하려면 다음을 수행하는 것이 좋습니다.

노트
HTML 마크업에 주석 문자를 사용하지 않더라도 거의 모든 최신 브라우저는 잘 작동합니다. 그러나 사용자가 이전 브라우저를 사용하게 될 수 있으므로 이렇게 하는 것이 좋습니다.

이제 JavaScript가 포함된 간단한 HTML 페이지의 예를 들어보겠습니다.

만들다 텍스트 파일, 확장자를 변경하고(txt가 아닌 htm 또는 html이어야 함) 위의 텍스트를 삽입하고 저장합니다.

그런 다음 해당 파일을 두 번 클릭하여 실행합니다. 기본 브라우저가 열리고 "웹 페이지의 첫 번째 스크립트입니다!"라는 메시지가 나타납니다.

짐작할 수 있듯이 HTML 페이지와 여기에 포함된 스크립트는 인터넷에 연결되어 있지 않아도 사용자의 컴퓨터에서 실행할 수 있습니다. 이것은 ...

주목!
JavaScript를 사용하면 사용자의 컴퓨터에서 실행되는 프로그램을 작성할 수 있습니다. 그리고 그의 것이 무엇인지는 전혀 중요하지 않습니다. 운영 체제! 가장 중요한 것은 그의 브라우저가 스크립팅을 지원한다는 것입니다. 그리고 엄청난 비용이 드는 특별한 개발 도구가 필요하지 않습니다. 텍스트 편집기만 있으면 충분합니다!

매우 간단합니다. 마우스 오른쪽 버튼을 클릭하고 상황에 맞는 메뉴에서 적절한 항목을 선택하기만 하면 됩니다. 사용하는 브라우저에 따라 문구가 다를 수 있습니다. 모질라 파이어 폭스이것은 Apple Safari에서 "소스"라고 합니다 - "소스 보기", 구글 크롬- "페이지 코드 보기", Opera - "소스 코드", 인터넷 익스플로러- "HTML 코드 보기".

정상적으로 구성된 서버 측으로 페이지의 HTML 코드를 형성하는 서버 측 스크립트의 소스 코드 소프트웨어, 단순 요청을 받을 수 없습니다. PHP 또는 Perl 스크립트의 소스 코드는 FTP 프로토콜을 사용하여 파일을 다운로드하거나 호스팅 제어판 또는 콘텐츠 관리 시스템의 파일 관리자를 통해서만 볼 수 있습니다. 당신은 평소와 같은 파일을 열 수 있습니다 텍스트 에디터.

브라우저에서 직접 실행되는 클라이언트 스크립트(예: JavaScript)의 소스 코드는 브라우저 캐시에서 해당 파일을 검색하여 볼 수 있습니다. 그리고 더 쉽게 - 모든 첨부 파일이 있는 페이지를 특정 위치에 저장합니다. 이 경우 캐시에 저장된 모든 것을 파헤칠 필요가 없습니다. 이렇게 하려면 모든 브라우저에서 Ctrl + S 키 조합을 누른 다음 "파일 형식" 필드에서 "웹 페이지 전체"를 선택합니다. 일반 텍스트 편집기를 사용하여 스크립트의 소스 코드가 포함된 js 확장자를 가진 파일을 열 수도 있습니다.

브라우저가 컴퓨터에 다운로드하는 Flash 동영상의 소스 코드는 보기가 쉽지 않습니다. 브라우저는 소스 코드를 수신하지 않고 컴파일된 버전인 실행 코드만 수신합니다. 그러나 역변환 절차를 수행할 수 있는 디컴파일러 프로그램이 있습니다. 예를 들어 Flash Decompiler Trillix는 브라우저에 통합되어 페이지에서 Flash 개체를 추출하여 저장할 수 있습니다. 디컴파일러에서 플래시를 열면 이미지, 스크립트, 사운드 등의 개별 구성 요소에 액세스할 수 있습니다. 물론, 이 코드는 작성자의 소스와 완전히 일치하지는 않지만 작동하기에 충분한 정도의 정확도에서만 가능합니다.

"소스"는 인간이 읽을 수 있는(고수준) 프로그래밍 언어로 된 프로그램의 코드라고 하는 경우가 가장 많습니다. 이 코드를 사용하여 프로그램(스크립트, 플래시 무비, 자바 응용 프로그램, 응용 프로그램 등)을 변경할 수 있습니다. 프로그램의 작성자 또는 배포자가 소스 코드를 완제품과 함께 배포할지 여부를 결정합니다. "오픈 소스"로 배포되는 전체 응용 프로그램 클래스가 있으며, 정의에 따라 다른 프로그램(예: JavaScript 스크립트 또는 HTML 페이지)의 소스 코드는 숨길 수 없으며 다른 프로그램의 소스 코드가 대상입니다. 저작권에.

지침

저자 또는 배포자의 사이트에서 오픈 소스 응용 프로그램의 소스 코드를 가져옵니다. 소프트웨어 제품... 일반적으로 "정보"항목을 선택하면 "도움말"이라는 이름의 메뉴 섹션에서 사이트 주소를 찾을 수 있습니다.

소스 코드에 액세스하려면 웹 페이지를 마우스 오른쪽 버튼으로 클릭합니다. 모든 브라우저에서 드롭다운 상황에 맞는 메뉴에는 보기 소스 명령이 포함되지만 해당 문구는 약간 다를 수 있습니다. 상황에 맞는 메뉴 없이도 할 수 있습니다. ctrl + u 키 조합은 소스 보기 명령에 대한 호출을 복제합니다. 일부 브라우저에는 탐색 도구(Mozilla Firefox, Google Chrome)가 내장되어 있고 다른 브라우저는 이를 위해 외부 프로그램을 사용합니다(대부분 메모장). 이렇게 해서 얻은 페이지 소스를 파일로 저장할 수 있습니다.



관련 기사: