JavaScript 코드를 숨기거나 암호화하려면 어떻게해야합니까? [복제하다

StackOverflow https://stackoverflow.com/questions/1020368

문제

이 질문은 이미 여기에 답이 있습니다.

사람들이 독점 프로그램을보고, 복사 및/또는 수정하는 것을 방지하기 위해 JavaScript 코드를 숨기거나 암호화 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 그것을 난독화할 수 있지만 그것을 완전히 보호 할 방법은 없습니다.

예제 Obfuscator :https://obfuscator.io http://www.javaScriptObfuscator.com/default.aspx

다른 팁

아니요, 불가능합니다. 클라이언트 브라우저에서 실행되면 클라이언트 브라우저에서 다운로드해야합니다. Fiddler를 사용하여 HTTP 세션을 검사하고 다운로드 한 JS 파일을 얻는 것은 매우 중요합니다.

사용할 수있는 트릭이 있습니다. 가장 분명한 것 중 하나는 JavaScript Oppuscator를 사용하는 것입니다.

그런 다음 난독 화는 캐주얼 스누핑 만 방지하며 사람들이 코드를 들어 올리고 사용하는 것을 막지 않습니다.

플래시 영화 형태로 컴파일 된 액션 스크립트를 시도 할 수 있습니다.

모든 사람은 일반적으로 JavaScript 암호화가 나쁜 생각, 공격 속도를 늦추는 것이 아무것도없는 것보다 낫습니다. 당신은 시작할 수 있습니다 유비 압축기 (@ben alpert와 같이) 또는 JSMIN, Uglify 또는 더 많은 것입니다.

그러나 실제로 '물건을 숨기고 싶은 주된 사례는 이메일 주소를 게시 할 때입니다. '요소 검사'를 클릭하면 Chrome의 문제가 있습니다. 매번 원래 코드를 표시합니다. 이것이 Obfuccation이 일반적으로 더 나은 방법으로 간주되는 이유입니다.

그 메모에서, 나는 스팸 봇을 느리게하기 위해 두 개의 갈래 공격을받습니다. JS를 난독 화/미니던 후 인코더를 통해 다시 실행합니다 (다시,이 두 번째 단계는 크롬에서 완전히 무의미합니다).

순수한 JavaScript 인코더는 아니지만 내가 찾은 최고의 HTML 인코더는 다음과 같습니다. http://hivelogic.com/enkoder/. 이것을 돌릴 것입니다 :

<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";  
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>

이것으로 :

<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")"                                                                     ;
while(x=eval(x));
//-->
//]]>
</script>

스팸 봇 몇 개를 늦추기에 충분할 수도 있습니다. 나는 이것을 사용하여 스팸이 없었습니다 (!

최고의 압축기 중 하나 (구체적으로 oppuscator가 아님)는 다음과 같습니다. 유비 압축기.

JavaScript는 스크립팅 언어이므로 JavaScript 런타임에 의해 해석되고 실행 될 때까지 인간 읽기 쉬운 형태로 유지됩니다.

적어도 덜 기술적 인 마음에서 부분적으로 숨길 수있는 유일한 방법은 난독 화하는 것입니다.

난독 화 된 것은 인간이 읽기가 더 어렵지만 기술적으로 정통한 사람들에게는 불가능하지 않습니다.

특히 독점 알고리즘과 같은 숨을 쉬고 싶다면 서버에 넣거나 플래시 영화에 넣고 JavaScript로 호출하십시오. ActionScript 작성은 JavaScript 작성과 매우 유사하며 JavaScript와 ActionScript 사이를 전달할 수 있습니다. Silverlight에서도 똑같이 할 수 있지만 Silverlight에는 침투 플래시가 없습니다.

그러나 모든 휴대 전화는 실버 라이트 나 플래시가 아닌 JavaScript를 실행할 수 있으므로 Flash 또는 Silverlight와 함께 이동하면 모바일 사용자를 무너 뜨릴 수 있습니다.

코드를 보호하는 유일한 안전한 방법은 코드를 제공하지 않는 것입니다. 클라이언트 배포를 사용하면 클라이언트가 코드에 액세스 할 수있는 피할 수 없습니다.

그래서 짧은 대답은 : 당신은 그것을 할 수 없습니다

더 긴 대답은 플래시 또는 실버 라이트를 고려하는 것입니다. 나는 Silverlight가 기꺼이 반사기가 고객에게 실행되는 비밀을 포기할 것이라고 믿지만.

플래시 플랫폼에 시뮬레이션이 존재하는지 확실하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top