## HTMLソースを見せないようにするには？

トップ > アラカルト > HTMLソースを見せないようにするには？

#### ■ HTMLソースを見せたくない

「HTMLソースや、JavaScriptのソースを閲覧者に見せたくない」という要望がよくあります。これに対する答はひとつ、「公開しない」しかありません。つまり、ブラウザでも見えない状態にしておけば、ソースを見られる心配はありません。

ブラウザで見える状態にするということは、何らかの方法でHTMLやJavaScriptのソースを閲覧者側のブラウザが解釈できるということですから、ブラウザの代わりにダウンロードツールなどのちょっとしたツールを使えば、ソースは見られてしまうことになります。

ただ、ソースを見るのを難しくする、見るまでの手順を面倒にする、あまり詳しくない人に見る方法を分かり難くするなどの方法はいくつかあります。

#### ■ HTMLソースを見え難くする - フレームを使う

ページをフレームに分割し、ひとつ目のフレームをサイズ0、ふたつ目のフレームを100%の大きさにします。[表示]-[ソース]などで表示しても、<frameset>などのフレーム文書のソースが見えるだけになります。しかし、フレームをマウスで右クリック（Windowsの場合）して[ソースの表示]とかやると簡単に見えてしまうので、あまり強固とは言えません。

- 右クリックを禁止するには？を追記しました。(2000.1.9)

#### ■ HTMLソースを見え難くする - 改行を取り去る

HTML文書が完成したら、簡単なツールを使って、改行コードをすべて取り去ってしまいます。例えば、perlが使える環境であれば、

    while (<>) { s/[\r\n]+$//; print; }

という簡単なプログラム（xx.pl）を作成して、コマンドラインから以下のようにすることで改行を取り去ることができます。

    perl xx.pl xx.html > new.html

[表示]-[ソース]でソースを見られても、すべての内容が1行に連なってしまうので、読めないというよりも、読む気力を起こさせなくします。

#### ■ JavaScriptを見え難くする - JavaScript外部ファイルを使う

本文中に<script>〜</script>で直接記述してしまうと、[表示]-[ソース]ですぐに見えてしまいますが、<script>タグのSRC属性で外部ファイルに記述しておくと、少しは見られ難くなります。HTML本文には

    <script src="xxx.js"></script>

と記述しておき、xxx.jsファイルの中でJavaScriptを記述（<script>タグと、<!--、// -->の記述は不要）しておけば、[表示]-[ソース]で見られることはありません。しかし、[ファイル]-[開く]などからxxx.jsファイルへのURLを直接指定された場合は、xxx.jsをダウンロードできたりしまうので、完全ではありません。

#### ■ HTMLソースを見え難くする - JavaScript外部ファイルを使う

上記の応用で、すべてのHTML記述を、JavaScriptのdocument.write()で書いてしまえば、[表示]-[ソース]でHTMLソースを見られることもなくなります。ずいぶん面倒な方法ではありますが・・・

#### ■ 相手の良心に訴える

HTMLソースやJavaScriptソースの先頭に、著作権の明示（HTMLソースを著作権で保護できるかは疑問だそうですが）や、「苦労して開発したものなので、流用する場合はメールで許可を得てね」という但し書きを書いておく方も居られるようです。世の中悪人ばかりじゃないですから、これでも少しは「無断流用」を防げるかもしれませんね。

#### ■ その他の方法

その他の方法として、以下のような方法を紹介していただきました。

超単純だけど、漢字コードをEUCとかにしておくと、Windowsなどで見た際に文字化けして、見る気をなくすかも・・・(2000.3.20)

フレームを使う技で、フレームを2重、3重にしていくといいかも・・・(2000.3.23)

HTML記述をBASE64などのアルゴリズムを用いてエンコードし、これをJavaScriptでデコードしながら表示する(2000.9.3追記)

HTML記述をJavaScriptの外部ファイルで記述し、JavaScriptの外部ファイルをREFERERをチェックするCGIから送出する。さらに、HTMLのgzip圧縮を利用してgzipサポートブラウザのみに送出してやる。さらに、Cache-control: no-cache、Cache-controle: no-store、Expire:、Pragma: no-cache ヘッダを用いてキャッシュされないようにする。・・・これは結構強力ですね。(2000.9.18)

JavaScriptでメニューバーの無いウィンドウを生成し、そこでマウスの右クリック禁止や、キャッシュの無効化を組み合わせる。(2000.10.9)

Copyright (C) 1996-2000 杜甫々
2000年10月9日
http://www.tohoho-web.com/wwwxx029.htm