ブラウザでソースコードを表示するときに、ソースコードがブラウザのソース表示機能で表示されるときに、JavaScriptコードをWebページのHTMLから非表示にすることはできますか?
コードを難読化することは可能ですが、ソースの表示機能から非表示にすることをお勧めします。
ブラウザでソースコードを表示するときに、ソースコードがブラウザのソース表示機能で表示されるときに、JavaScriptコードをWebページのHTMLから非表示にすることはできますか?
コードを難読化することは可能ですが、ソースの表示機能から非表示にすることをお勧めします。
回答:
ブラウザーの[ソースの表示]コマンドから表示されているコードである他の誰かが実際に直接あなたの質問に対応したかどうかはわかりません。
他の人が言ったように、ブラウザで実行することを目的としたjavascriptを特定のビューアから保護する方法はありません。ブラウザで実行できる場合は、決定された人なら誰でも閲覧/実行できます。
ただし、次のファイルに含まれている外部JavaScriptファイルにJavaScriptを配置すると、
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
タグを付けると、JavaScriptコードは[ソースの表示]コマンドですぐには表示されません。その方法で表示できるのは、スクリプトタグのみです。それは、誰かがその外部JavaScriptファイルを読み込んでそれを表示することができないという意味ではありませんが、ブラウザの[ソースの表示]コマンドからそれを除外する方法を尋ねたところ、これが実行されました。
ソースを表示するための作業を増やしたい場合は、次のすべてを実行します。
以上のことを踏まえて、パフォーマンス、信頼性、アプリの優れた点に重点を置く必要があると思います。あるアルゴリズムを絶対に保護する必要がある場合は、それをサーバーに配置しますが、それ以外の場合は、秘密を保持するのではなく、最善を尽くして競争します。とにかく、それがWebで成功する方法です。
<script>
と、それがソースの表示から除外されます(まだライブDOMの下に表示されます)。つまり、ソースビューで単に「右クリック」することはできません。<script>
JavaScriptが実行されると、上記の要素が削除され、元のコードを取得するのが少し面倒になります(ただし不可能ではありません)。もちろん、Firebugまたは同様のものではネットトラフィックがすぐに表示されます;-)
いいえ、できません。
ブラウザに渡さない場合、ブラウザにはありません。
その場合、それ(または簡単にそれを参照すること)がソースの一部を形成します。
私の解決策は、最後のコメントから発想を得ています。これはinvisible.htmlのコードです
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>
invisible_debut.jsの明確なコードは次のとおりです。
$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});
最後に、作成したスクリプトを削除していることに注意してください。invisible.jsは:
$(document).ready(function(){
alert('try to find in the source the js script which did this alert!');
document.write('It disappeared, my dear!');});
invisible.jsは削除されており、JavaScriptで作成されたためにソースコードに表示されていないため、コンソールには表示されません。
invisible_debut.jsについては、難読化しました。つまり、invisible.jsのURLを見つけるのは非常に複雑です。完璧ではありませんが、通常のハッカーには十分です。
invisible.js
、情報源で見つけることができます。クロームバージョン34.0.1847.131メートル
Html Encrypterを使用する
<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>
copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample
<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->
HTML暗号化注 :ページにJavaスクリプトがある場合は、.jsファイルにエクスポートして、上記の例のようにしてください。
また、この暗号化機能は、Webサイトをめちゃくちゃにするいくつかのコードで常に機能しているわけではありません...たとえば、次のように非表示にする最適な部分を選択してください <form> </form>
これは事前のユーザーによって逆にすることができますが、私のようなすべてのnoobが知っているわけではありません。
これが役に立てば幸い
その情報を隠す方法があるかどうかはわかりません。JavaScriptで行っていることを難読化または非表示にするために何をしても、それを使用するにはブラウザーがそれをロードする必要があるという事実に帰着します。最新のブラウザーには、スクリプトの抽出と表示を簡単に行えるようにする、すぐに使えるWebデバッグ/分析ツールがあります(F12たとえば、Chromeで実行するだけです)。
ある種の企業秘密やアルゴリズムの公開が心配な場合は、そのロジックをWebサービス呼び出しにカプセル化し、ページでAJAXを介してその機能を呼び出すことが唯一の手段です。
'不可能である!'
ああそうです...
//------------------------------
function unloadJS(scriptName) {
var head = document.getElementsByTagName('head').item(0);
var js = document.getElementById(scriptName);
js.parentNode.removeChild(js);
}
//----------------------
function unloadAllJS() {
var jsArray = new Array();
jsArray = document.getElementsByTagName('script');
for (i = 0; i < jsArray.length; i++){
if (jsArray[i].id){
unloadJS(jsArray[i].id)
}else{
jsArray[i].parentNode.removeChild(jsArray[i]);
}
}
}
ブラウザのビューソースで特定のJavaScriptコードを非表示にするソリューションを見つけたと思います。ただし、これを行うにはjQueryを使用する必要があります。
例えば:
あなたのindex.phpで
<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>
<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>
<div id = "content">
</div>
</body>
js.jsファイルのjquery関数によって呼び出されるhtml / php本文にファイルをロードします。
js.js
function loaddiv()
{$('#content').load('content.php');}
ここにトリックがあります。
content.phpファイルに別のヘッドタグを配置し、そこから別のjsファイルを呼び出します。
content.php
<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>
<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>
<div id = "content2">
</div>
js2.jsファイルで、必要な関数を作成します。
例:
js2.js
function loaddiv2()
{$('#content2').load('content2.php');}
content2.php
<?php
echo "Test 2";
?>
リンクをたどって、jquery.jsのファイル名にコピーして貼り付けてください
http://dl.dropbox.com/u/36557803/jquery.js
これがお役に立てば幸いです。
使用できますdocument.write
。
jQueryなし
<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>
またはjQueryを使って
$(function () {
document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});
可能ではありません!
唯一の方法は、JavaScriptを難読化するか、JavaScriptを縮小して、エンドユーザーがリバースエンジニアリングするのを困難にすることです。ただし、リバースエンジニアリングすることは不可能ではありません。
数年前に使ったアプローチ-
jspファイル、サーブレットのjavaファイル、フィルターのjavaファイルが必要です。
ユーザーにjspファイルへのアクセスを許可します。jspファイルのユーザータイプURL。
ケース1 -
Printwriterを使用して、ユーザーへの応答をレンダリングします。
一方、サーブレットはキーファイルを作成します。
サーブレットがその中でxxxx.jsファイルを実行しようとすると、フィルター
がアクティブになり、キーファイルが存在することを検出して、キーファイルを削除し
ます。
したがって、1サイクルが終了します。
つまり、キーファイルはサーバーによって作成され、フィルターによって即座に削除されます。
これはすべてのヒットで発生します。
ケース2-
ファイルを作成する代わりに、セッション変数の設定値を使用できます。