2012-09-25 4 views
1

나는 사용자가 소스 파일에서 검색 할 수 없도록 자바 스크립트 숨기기를 테스트하는 방법이 있습니다. 당신은 자바 스크립트 파일들을 응용 프로그램 작업을하기 위해 포함해야javascript hiding eval

  1. :

    방법이있다. jQuery, dojo 및 자신의 코드와 같은 라이브러리. 이것은 꽤 표준입니다.

  2. 자바 스크립트 코드가 없으면 앱이 작동하지 않으며 흥미로운 사용자는 앱을 사용하지 않고 앱의 헤드 또는 테일을 만들 수 없습니다. 이 중요한 부분은 스크립트 태그에 의해로드되지 않습니다. 대신, 작은 눈에 거슬리지 스크립트는 데이터베이스를 호출하고 큰 긴 문자열로 자바 스크립트를 반환합니다.

  3. 이 문자열은 eval()이되어 라이브 코드가됩니다. 그러나 코드가 동적으로 생성되었으므로 사용자가 소스 코드를 조사하거나 웹 사이트를 저장하면 코드가 표시되지 않습니다. 또한, 사용자가 자바 스크립트 커널을 공개하기 위해 데이터베이스를 속이려고하는 것을 방지하기 위해 일종의 소금이나 타임 스탬프를 추가 할 수 있습니다.

나는 지역 사회에서이에 대한 피드백을 얻기 위해 노력하고있어 내가 서버 측 코드와 자바 스크립트를 숨기기 위해 설정 한 대부분의 예제는되어 사람들은 .PHP 파일을 포함하도록하고자했다 .js 대신 태그에. 이것은 완전히 다릅니다.

그래서 당신은 그것을 가지고 있습니다. 이것은 좋은 생각입니까? 약점은 무엇입니까?

+2

'eval'은 적어도 대부분의 경우 악합니다. 또한 해당 코드 난독 화를 사용하여 만족스러운 디버깅을 수행 할 수 있습니다. 그것은 PITA가 될 것이고 결국에는 코드를 무료로 사용할 수있는 방법이 있음을 알게 될 것입니다. XHR을보고, 얻은 내용을 복사하고, IDE에 넣고, 적절한 방식으로 코드를 포맷하는 도구를 실행하면됩니다. – clentfort

+0

eval is evil http://blogs.msdn.com/b/ericlippert/archive/2003/11/01/53329.aspx – ama2

+4

웹 브라우저에서 다운로드 할 수 있으면 누구나 볼 수 있습니다 (예 : 방화통 탭) – Scuzzy

답변

3

eval() 일반적으로 싫은 점이 있지만 큰 약점은 단순히 HTTP 요청을 스니핑하여 스크립트를 얻을 수 있다는 것입니다. 난독 화 (obfuscation)는 이것을 더 불편하게 만들 수 있지만, 좋은 디버거를 사용하면 스택 트레이스를 따라 가면서 발생하는 상황을 파악하는 것이 어렵지 않습니다.

리소스가 SSL을 통해 전송되는 경우에도 브라우저가로드 한 후에는 리소스를 재사용/조작 할 수 있습니다. 이를 테스트하기 위해 보안 웹 사이트에 가서 SmartSniff을 사용하여 원시 TCP 응답 (XML HTTP를 사용하여 동기 및 비동기 모두)을 검사했습니다. 예상대로 암호화되고 읽을 수 없습니다. 그러나 동일한 요청은 모두 Chrome의 네트워크 활동 검사기에 일반 텍스트로 표시됩니다.

+1

그렇지 않습니다 (이 답변이 다른 곳에서 받아 들여 졌음에도 불구하고). – symcbean

+1

정성스럽게 신경 쓰시겠습니까? –

2

인간이 자바 스크립트 코드를 읽을 수 없게 만들고 (심지어 리버스 엔지니어링에 대한 저항력이 높다) 다른 코드로 숨길 필요가 없습니다. 하지만 왜? 일반적으로 이러한 종류의 코드에 부여 된 이름은 맬웨어입니다.

관련 문제