▼▽ Instant Access Menu ▽▼

 右クリックを禁止する(カスタマイズメニューの表示)   

 待望のHTML暗号化ソフト誕生!! 
株式会社プランセスの全面協力の元、HTML暗号化ソフト「SHTML」を2005年7月11日にリリースしました。

Javascriptの知識が全くない方でも利用可能なように設計されています。最短ステップの場合、暗号化したいソースを貼り付けて、「暗号化する」ボタンをクリックするだけです!!

右クリック禁止+ソースの暗号化+印刷禁止+テキスト選択禁止・・・が今までにないほど簡単に!!
(サンプル):
オリジナル: 株式会社プランセスのメインページ

暗号化したページ: こちら

 単純な右クリック戦略の限界
1.どんなに頑張っても右クリックを禁止できないブラウザが、ごく一部存在する。
2.右クリック禁止を解除できるproxyソフトや、ツールが存在する。
3.Javacriptをoffにすれば右クリックし放題になる。
SHTMLなら、ソースが全て暗号化+右クリック禁止されているので、仮に右クリックされてもJavascriptやスタイルシート、動画、midiファイルをプロテクトできます。(特定の一部ブラウザによる右クリック時の画像保存への対抗策も現在、開発準備中です。)

最近、右クリック禁止のサイトが増えてきました。右クリックしようとすると、「右クリック禁止です」というようなalertが表示されるわけです。このメッセージの出し方の是非については後ほど見ていきますが、とりあえず右クリック(Macの場合はcontrolキー+マウスクリック)できないようにするタグについて考えてみます。

たまに、<body bgcolor=#FFFFFF oncontextmenu="alert('右クリックは禁止です');return false">というコードが紹介されていますが、このコードはWindows版IE5以上もしくはMac版ネットスケープ6.1では右クリックの禁止を確認できましたが、他のブラウザでは右クリック可能です(参照:テスト環境一覧)。ネットスケープ4.XやWindows版IE4.Xでも動くようにしようとすれば、下記のようなコードが必要です。

また、「右クリック」というのは一般的にはWindowsでの話です。Macの標準的なマウスはワンボタンマウスのため、右クリックはなく、controlキーと一緒に左クリックするとWindowsのようなメニューがマウスクリックした地点の近辺に現れます。(もちろん、Mac用マウスでも右クリックができるマウスは市販されていますし、Mac対応をうたっていない通常のWindows用マウスでも、MacのUSBに差し込んだら、問題なく使え、右クリックも自由にできるようになったたというケースを私も知っています。)

ただ、一般的にはMacには右クリックという概念そのものが希薄なわけですから、「右クリック禁止」というよりは、このメニューが現れないようにするスクリプトと言った方が、より正確であると思います。このメニューのことをコンテクストメニュー(contextmenu)と言います。

【広告】□■業界最安値のDTI高速モバイルプラン!月額790円?■□

<script language="Javascript">
<!--
	var Mac   = navigator.userAgent.indexOf("Mac") != -1   ? true : false;
	function mdown(e) {
	if (navigator.appName == "Microsoft Internet Explorer") {
		//Mac版IE5ではコマンドキーを使ったショートカットでソースを見ることができます。
		if (event.button == 2 || (Mac && (event.ctrlKey || event.keyCode == 91))) {
			alert("コンテクストメニューは利用できません。");
			return(false);
		}
	  } else if (navigator.appName == "Netscape") {
		if (e.which == 3 || e.modifiers == 2 || e.ctrlKey) {
			alert("コンテクストメニューは利用できません。");
			return false;
	    }
	  } 
	}

	function noright(){
		alert("コンテクストメニューは利用できません。");
		return false;
	}


	document.oncontextmenu = noright;

	if (document.all && (Mac || ! document.getElementById)) {
		document.onmousedown = mdown;
		document.onkeydown = mdown;
	} else if (document.layers) {
		window.captureEvents(Event.MOUSEDOWN | Event.modifiers | Event.KEYDOWN);
		window.onmousedown = mdown;
		window.onkeydown = mdown;
	} else if(navigator.userAgent.indexOf("Netscape6")!=-1){
		//onmousedownだとalertが表示されますが、
		//同時にデフォルトのコンテクストメニューも表示されてしまいます。
		//なのでonmouseupを使います
  		document.onmouseup = mdown; 
		document.onkeydown = mdown;
	}

//-->
</script>

このコードを埋め込んだコンテクストメニューの表示を抑制するようにしたサンプルはこちら(Mac版IE4.5では動作しません。つまりコントロールキーを使ってソースを表示できます。その他のブラウザでもテスト環境以外のブラウザでは動作しない可能性があります。)です。

しかしながら、これはあくまでもコンテクストメニューの表示を抑制しているに過ぎません。ソースを見る方法はいくらでもあります。ツールバーで、IEなら「表示→ソース」で、ネットスケープなら「表示→ソースの表示」で簡単に見ることができてしまいます。そこで、このツールバーを消す方法を次に考えてみましょう。

【広告】SDガンダム外伝 コンプリートボックス vol.2      【広告】CDを買うなら楽天

【広告】産地直送・前沢牛      【広告】動的なHTMLソースのリアルタイム難読化が可能なPHPライブラリ

と言いつつ、その前に、今更ながらですが、そもそもこの「右クリック禁止」ってとても鬱陶しくありませんか? 右クリックする目的は何も「ソースを見ること」だけでなく、「印刷」が目的であったり、「前のページに戻ったりする」ことである場合もあるでしょう。「お気に入りに追加」しようとしてくれているのかもしれません。リンク先を別ウインドウで表示させたいと思っているだけかもしれません。右クリックするたびに、alert(文字通り、警告)が表示されて、何か悪いことでもしているかのように言われて、非常に使い勝手が悪いです。Windowsの「このプログラムは不正な処理を行いましたので強制終了します」と同じぐらいに、ユーザービリティー最悪です。

ただ、確かに、alertが表示されないで、右クリックできないのも、パソコンが壊れたのかなと一瞬あせりますので、何か代替のものが欲しいですね。そこで、デフォルトのコンテクストメニューに代わる代替メニューを表示させるというのはどうでしょうか? ブラウザの自動判別によるサンプルをこちらに準備しました。ブラウザのタイプを自動検出して、それぞれのページにリダイレクトさせています。1ページにまとめてブラウザごとに処理を変えてもいいのですが、そうすると重くなりますし、煩雑になりますので、最初にブラウザを判別しています。

ブラウザ判別後、下記のようなそれぞれのブラウザ用のページにlocation.hrefで飛ばしています。ご利用になられているブラウザとは違うページを閲覧されても正しく動作しません。予めご了承ください。

また、Mac版IE4.5では、コマンドキーを使ったコンテクストメニューの表示をイベントとして取得することができなかったため、代替表示メニューのサンプルもありません。

次のページでは、ブラウザのツールバーを表示させないことにより、HTMLソースを見られなくする方法を考えてみましょう。

Back ← |  |  |  |  |  |  | |  | 10 | 11 | 12 |13 | → Next


連絡先:info@broadband-xp.com
(免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。