
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> 完全に防止することはできないと思いますが、極力難読化することは可能かと思います。
盗用の完全防止ではなく、難読化することが目的ならば、
可能です。
・読みづらいコードを書く。
作者にさえわかりにくければ、読み手にもわかりにくいです。
現実的には、変数名や関数名が英数字の羅列というのはよくあります。
・改行とインデントを全て削除する
改行もインデントもなければ読みづらいのは言わずもがな。
・zipなどの圧縮アルゴリズムを応用して圧縮、実行時は解凍し、evalする。
a='alert';h='hoge';eval(a+'(¥''+h+'¥');');
・全ての文字を文字コードで記述し、実行時はfromCharCodeで復元。
メールアドレスの表示に使う暗号化アルゴリズムの一種。
アレンジすればウイルスに使われるほどファイルサイズを小さくしたり、
ファイルサイズを犠牲にして複雑な暗号アルゴリズムを組み立てることも可能。
基本的に原文からは推測出来ません。
> 例えば、CSSファイルなどはインポートさせた場合に
どこぞのアダルトサイトで使われてましたがインラインフレームの何重もの入れ子と
document.write('<script src=""></script>')の連鎖は、
解析する方としては面倒くさいことこの上ないので、難読化にはなりますがおすすめはしません。
インデント削除や圧縮アルゴリズムを応用するコンプレッサーは、フリーウェアにあります。
名前の通り、目的は難読化や暗号化ではなく、ファイルサイズ減少ですが、
きょうび、100kbや200kbは誤差の範囲ですし、難読化を目的として利用させてもらうにもちょうど良いツールと思います。
コンプレッサーで圧縮するのはコストパフォーマンスに優れていると思います。
複雑にすればするほど、解析も大変になってきます。
というよりも面倒くささにより解析させる気を失わせることを目的として、いくつかの圧縮・暗号パターンを組み合わせるのがもっとも効果的ではないでしょうか。
ただし、ある事を行ったり、ツールを使えば一目瞭然です。
これはどうしようもないです。
・HTMLやURLに深く依存し、下手なコードを書く。
これがベストだと思います。
解析するには最も面倒ですし、そんなコードは真似(盗用)したくないですしね。
コピーペーストするにも、HTMLに依存していればスクリプトのコピーだけでは利用出来ません。

No.3
- 回答日時:
どうしても・・・というなら、まぁ元も子もない意見ですが、そのスクリプトをすべてサーバサイドで動く言語に移植するのが一番確実でしょう。
そして必要に応じてAJAXなどで呼び出し、実行結果のみを受け取って利用するわけです。既に回答があるように、クライアントサイドである限り、スクリプトは隠せません。どうしてもというなら、サーバサイドを使うしかありません。
No.2
- 回答日時:
>お勧めの方法はないでしょうか?
お勧めは、そんな大事なコードならUPしないことです。
画像の場合と同じ理由です。
しかし、専門家や熟練したJavaScriptのプログラマなら、
大抵の挙動は想像がつきます。あなたが持っている「すばら
しいコード」よりももっとエコノミーでクロスブラウザかつ
メモリリークのないスクリプトを書けるかもしれません。
クライアントサイドのスクリプトでどのような暗号化をした
ところで私は復元する自信があります。他のプログラマも
同様でしょう。
一番よいのは、あなたのコードをここに公開してもっとよい
設計思想はないかを検討してみることかな、と。
いやいや冗談です。
No.1
- 回答日時:
無粋な突っ込みですが。
隠匿しなければならないような恥ソースなどは窓からぽいと捨てましょう。
もしくは第三者から完全に(物理的に)見れない状態にしましょう。
著作権を主張したいならば今はなきNetscapeに一日7回の礼拝を行うか
MoFoとMicrosoftに何かしらの貢献をしましょう。
まぁ冗談ですが。
>防止対策としてお勧めの方法はないでしょうか?
大抵はcryptなど復号化できる暗号を用いてソースそのものを暗号化し、
ページ表示時に復号→eval()といった流れになると思われます。
// ただ、javascriptをクライアントサイドで使用するという条件上それらは完全に無駄であり、
// 「クライアントに見せたくない」という謎の動機も首を傾げざるを得ません。
>例えば、CSSファイルなどはインポートさせた場合に存在しないインポート先URLを指定する(snip)
地球資源の無駄&サーバ管理者に迷惑なので止めましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部SVGの参照
-
html組込み時のカレントフォル...
-
JSPの処理の途中で、JavaScript...
-
エクセルVBA/ Formatで文字列が...
-
csvファイルを読み込み、該当項...
-
リクエスト結果が一瞬しか表示...
-
以下のコードを実行しても、オ...
-
フォルダ内のファイル一覧
-
正整数の半角数字かどうか判定する
-
1つのVBAコードをすべてのコア...
-
javascriptでフォルダ内のファ...
-
if(1){...}とはどういうことで...
-
ACCESS(VBA)の検索結果判定に...
-
正規表現について
-
漢字などを正規表現でパターン...
-
文字数の制限について
-
htmlのfileタグに自動で値を入...
-
デザイン時のVisible=Falseは実...
-
全角カタカナ バリデーション...
-
動的ファイルの最終更新日を取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ブラウザからエクセルを開く方法
-
ASP上からサーバサイドのVBScr...
-
FBのいいねボタンが表示されま...
-
IEの右クリックメニューからの...
-
jsでルートディレクトリより上...
-
星型評価スターレーティングの...
-
WEBブラウザから任意フォルダを...
-
Ajaxが動きません~『status=0』?
-
jqueryのglossが動いたり動かな...
-
JavaScriptによる....
-
html組込み時のカレントフォル...
-
JavaScriptでテキス...
-
ローカルのtest.txtを1行ずつ...
-
ローカル環境で動作しないJavaS...
-
JavaScriptでファイルの保存
-
画像のプレビューについて
-
ActiveXObjectについて
-
JQuery+JSONでChromeでローカル...
-
javascriptでテキストファイル...
-
このサイトの実装方法を教えて...
おすすめ情報