パソコンQ&A

画像の盗用を防ぐ(右クリック禁止&それ以外の方法各種)

[参考記事] Dreamweaverで編集できなくする手法
BODYタグまたはIMGタグにoncontextmenu="return false;"と書く
アラートを出す場合は
oncontextmenu="alert('右クリックは禁止。');return false;"

<BODY oncontextmenu="return false;">
<img src="【画像のアドレス】" oncontextmenu="return false;">

ただしこの方法はInternet ExplorerとNetscaape7以降しか対応できないようですし、JavaScriptを無効にしたブラウザの場合は無意味です。
あくまで気休め程度です。

もう少し範囲を広げたJavaScript
<Script Language="JavaScript">
<!--
if(document.layers)document.captureEvents(Event.MOUSEDOWN);
document.onmouseclick = rightclick;

function rightclick(a){
  if (navigator.appName.charAt(0)=="M") {
    if (event.button == 2) {
      alert("右クリックは禁止。");
    }
  }
  if (navigator.appName.charAt(0) == "N") {
    if (a.which == 3) {
      alert("右クリックは禁止。");
    }
  }
  return false;
}
//-->
</script>

<img src="【画像のアドレス】" onmousedown="return rightclick();">


そこで下記の画像表示!
右クリックで画像を保存しても正しく保存できません。
これは
<table border="0" BACKGROUND="img/testimg01.jpg">
  <tr>
    <td><img src="img/spacer.gif" width="250" height="180"></td>
  </tr>
</table>
背景に画像を設置して、表面に画像サイズ分の透明GIFを貼り付けています。
このため画像を右クリックで保存しても保存されるのは透明GIFです。


上の方法でもページを保存するとした場合は保存できてしまいます。
そこでCGIやPHPで書き出すやり方。
このページを保存しても([ファイル]→[名前をつけて保存])、下の画像は保存先のページには保存されません。
といっても拡張子が.phpになっているだけなので、拡張子を変えると保存されてます。

<img src="rightclick_testimg.php" width="250" height="180">

rightclick_testimg.php
<?php
$src=@imagecreatefromjpeg("img/testimg02.jpg");
imagejpeg($src);
imagedestroy($src);
?>

CGIなら…
rightclick_testimg2.cgi
#!/usr/local/bin/perl
$fileimg = 'img/testimg02.jpg';

print "Content-type: image/jpeg\n\n";
#print "Content-type: image/gif\n\n";
#print "Content-type: image/png\n\n";
#print "Content-type: image/bmp\n\n";

open IMGG,"$fileimg";
binmode (IMGG);
print ;
close (IMGG);

exit;


この状態だと画像のアドレスを直接入力すると表示ができてしまって保存されます。
次のリンクページの画像はアドレスベタ打ちだと表示は真っ黒です。

>テストページ(1)

rightclick.php
<?php
session_start();
$_SESSION['rightclick_test']=1;
?>
<img src="rightclick_testimg2.php?<?=SID?>" width="192" height="144">

rightclick_testimg2.php
<?php
session_start();
isset($_GET[$form_name]))? $_GET[$form_name] : $default; if((isset($_SESSION['rightclick_test']))? $_SESSION['rightclick_test'] :0==1){
$_SESSION['rightclick_test']=0;
  $src=@imagecreatefromjpeg("img/testimg03.jpg");
}else{
  $src = imagecreate(192, 144);
}
imagejpeg($src);
imagedestroy($src);
?>


2つをまとめると次のページ
>テストページ(2)
右クリックで画像保存も、ページを保存([ファイル]→[名前をつけて保存])もできません。
これで完全に画像が守れそうですが……できる人は盗用できちゃうんです。


実際にやってみると、ただ拡張子が変わって保存されているだけって気づく人もいるので、さらに分かりにくくするには外部スタイルシートで書いて、背景指定にするといいです。
この方法だとブラウザによってはページ保存で画像は保存されません。
<link href="http://kikky.net/pc/rightclick.css" rel="stylesheet" type="text/css">

.rightclick {
BACKGROUND-IMAGE: url(rightclick_testimg2.php);
}
>テストページ(3)
ただし外部スタイルシートはキャッシュされるので、動的に画像を変えるのには向きません。


えっ?印刷もさせたくない??
そんな場合は外部スタイルシートで
<link href="【外部スタイルシートのアドレス】" rel="stylesheet" type="text/css" media="print" />
このスタイルシートに画像を隠すように書けばよいです。


Internet Explorer 6のバグを使ってページを保存が出来なくする方法もあります。
下記のどちらかの条件を満たす場合にエラーが表示されて、保存が出来ません。
(1)外部スタイルシート内で@importを使い、外部スタイルシートとインポートされるスタイルシートをHTML文書とは別のディレクトリに置く。
(2)外部スタイルシートをHTML文書とは別のドメインに置く。

次のようなエラーが出ます。


<meta http-equiv="imagetoolbar" content="no" />
IE6で機能するイメージツールバーを無効にする
<meta http-equiv="pragma" content="no-cache" />
ページのキャッシュをさせない

<img src="【画像のアドレス】" border="0" onContextmenu="return false;" galleryimg="no" />
onContextmenu="return false;"
右クリック禁止
galleryimg="no"
IE6で機能するイメージツールバーを無効にする

画像フォルダに.htaccessを設置して制限する
.htaccess
SetEnvIf REFERER "?kikky.net"? Lilith
order deny,allow
deny from all
allow from env=Lilith

右クリックメニューの禁止
onContextMenu="return false"

ドラック選択の禁止
onselectstart="return false"

ページをキャッシュさせない方法に変わったものがあります。
開くページの元リンクを次のいずれかのようにします
<a href="http://kikky.net:0/pc/rightclick.html">〜〜〜〜</a>
<a href="http://kikky.net:/pc/rightclick.html">〜〜〜〜</a>
<a href="http://@kikky.net:0/pc/rightclick.html">〜〜〜〜</a>
この方法を使うと画像を右クリックで保存するときにBMP形式しか選べなくなります。
(Internet Explorerのみ[IE5以上])

検索エンジンでこのページに来られた方はもう分かっていると思いますが、スクリーンショットで保存するとだいたいの画像は保存されてしまいます。
[参考記事] スクリーンショットをとる方法(各種OS)

電子透かしという技術もあります。
JavaScriptを使うと、スクリーンショットを見づらい画像に変えることは可能かもしれませんが、そうするとJavaScriptを無効にしている人には 画像が見れなくなります。
閲覧者になにかしらの不具合を感じさせてしまうことになります。

結局は『イタチごっこ』なので『あきらめる』という手法もアリなのでは?

ただこれらの手法を使うことによって、盗用が減ることにはなります。
あ、Macintoshの標準は1つボタンなので、右クリック禁止は意味がないです。
(右ボタンがないですから…)
Mac使ってるとついやっちゃうんですよね、『右側』をクリック。
(あとマウスの近くにケータイ置いてると間違っちゃいますよねっ)
Windows用のマウスをMacOSXにつなぐと右クリック=control になります。便利!!

逆に盗用を許可するということもいいですよ。
いつかどこかのサイトで自分の作品が使われてたら、それはそれで嬉しいものです。

参考までにその辺の話をまとめたページ[あえて説明はナシ]

△上に戻る

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net