画像の保存方法と画像保護
 
 TOPページ
 コラム
 画像の保存と対策
 wmodeの問題点
 実験室
 Flashによる画像保護
 プログラム
 画像保護 imrage
 imrage設置例(その1)
 過去のプログラム
 imrage V0.9.0
 ImageCoder V1.0.2
 ImageCoder V1.0
 ImageLoader V2.0.1
 ImageLoader V2.0
 ImageLoader V1.0
 メール/掲示板



last modified 2009.8.26

画像の保存方法とその対策

ここでは、画像の保存方法と、それに対する対策を簡単にまとめます。

レベル1

右クリック→名前をつけて画像を保存

最も簡単な保存方法です。これに対する対策は、ほぼ確立しています。
テーブルの背景に画像を表示し、テーブルには透明なGIF画像を表示します。

レベル1対策サンプル


<table style="background-image : url(001.gif);" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
                <img src="null.gif" width="150" height="200">
            </td>
        </tr>
    </tbody>
</table>

右クリックで保存した場合、前面にある透明のGIF画像が保存されます。
JavaScriptも不要です、右クリックを禁止する必要もありません。

レベル2

ファイル→名前をつけて保存
WEB自動巡回ロボット

ページ全体を画像なども含めて、丸ごと保存する方法です。
手軽に出来る割には強力です。
ブラウザにより多少差はありますが、表示している画像はほとんど保存されます。

WEBを自動巡回するソフトも、このレベルに分類します。
(サイトを丸ごと保存する物や、画像ファイルを収集する物など)

この保存方法に対する対策は、HTMLのみでは出来ません。

レベル2対策(JavaScript)

JavaScriptを利用する例です。
基本的にはレベル1対策を施し、背景画像はJavaScriptを使って動的に読み込みます。
(詳細はサンプルのソースをご覧下さい。)

ソース抜粋
var f1 = '00';
var f2 = '2.jpg';
document.getElementById(targetID).style.backgroundImage='url('+f1+f2+')';

Windows環境の、IE6、Firefox2、Opera8では、これで画像は保存されなくなります。
(その他の環境ではテストしていません)

画像ファイル名を、二つの変数に分けているのは、ロボット対策です。
画像ファイル名をそのまま記述すると、解析される恐れがあります。

この方法の難点は
 ◆ JavaScriptが有効でないと表示できない。
 ◆ ソースを読めば画像の保存場所がばれる。
 ◆ Firefoxのページ情報→メディアには表示される。

完璧ではないですが、手軽ですし、効果はあります。


レベル2対策(Flash)

Flashを利用する方法です。Flashを使って画像ファイルを表示します。
Flash自体は保存されますが、Flashに画像は含まれていないので、画像は取られません。
レベル2に対しては、恐らく完璧な対策です。

この方法の難点は
 ◆ Flashが表示出来る環境でないと閲覧できない。
 ◆ 単純な画像よりも、重くなる。(Flashのファイルサイズ122KB)

Flashの普及率や、ネットの高速化を考えれば、それほど問題にならないでしょう。

こちらのFlashは公開しています。こちらからダウンロードできます。

レベル3

キャッシュを漁る
Safariの構成ファイル一覧

キャッシュはタグである程度コントロールできますが、ブラウザによっては無視されます。
Safariの構成ファイル一覧はFlashからリクエストしたファイルも表示されてしまいます。

これらによる保存を防ぐことは出来ないので、対策としては画像ファイルを暗号化するしかないでしょう。

レベル3対策(Flash+CGI)

CGIで画像を暗号化、Flashで解読して表示しています。
暗号化されたファイルは保存されますが、暗号を解かないと画像にはなりません。

こちらのFlash+CGIは公開していますので、暗号は解析される恐れはありますが、
それなりの専門知識と時間が必要です。コピーの難易度はかなり高くなります。

こちらからダウンロードできます。

この方法の難点は
 ◆ CGIが利用できる環境でないと設置できない。
 ◆ Flashが表示出来る環境でないと閲覧できない。
 ◆ 単純な画像よりも、重くなる。(CGIの処理やFlashの読込など)


その他の方法

暗号化による画像保護ソリューションは他にもありますが、
私の知る限りでは以下のような難点があります
 ◆ 閲覧者は専用のプラグインをインストールする必要がある
    利用できる環境が限られる。
    閲覧者にとっては抵抗がある。
 ◆ 有料である
 ◆ 事前に画像ファイルを暗号化する必要がある

お金と手間は掛かりますが、保護能力は高いと思います。
しかし、次のレベル4に対応出来ているのか?レベル4へつづく・・・

レベル4

画面のキャプチャ

今までの方法とは異なり、ファイルを保存するのではなく、
画面に表示されている情報を保存します。
公開している訳ですから、当然、画面には表示されます。
画面に表示されている情報は、OSが管理していますので、
これのコピーを完全に禁止するのは不可能だと思います。

ある有料の画像保護ソリューションを例に取ります。
「画像保護」で検索して上位に表示される、ある画像保護ソリューションです。
(今から保護を破る例を出しますので、実名は伏せておきます)

閲覧者は専用のプラグインをインストールしなければ画像を見ることは出来ません。
そのプラグインはキャプチャソフトの起動を感知すると画像を非表示にします。
(当然、PrintScreenキーも無効になっています)

しかし、全てのキャプチャソフトを感知できる訳ではないようです。
(3000種類のソフトに対応と説明に書いてありました)

案の定、自作のキャプチャソフトで簡単にキャプチャ出来ました。

キャプチャソフトを作るのは、それほど難しい事ではありません。
プログラミングの経験がある人なら、割と簡単に作れると思います。
(私もこの実験のために作りましたが、10分もかかりませんでした)

この例からも、キャプチャを禁止する事の難しさをうかがい知る事が出来ます。
有料のソリューションですら、この程度ですから・・・

という事で、レベル4対策は、ありません。

Web上で画像を公開する場合は常に、キャプチャされる可能性があります。
キャプチャされる事を前提に、画像を公開する必要があります。

著作権表示や、ロゴ画像を入れるといった対策以外には方法は無いと思います。
レベル2、レベル3で紹介したFlashには、ロゴ画像を表示する機能があります。
(画像ファイルを加工する必要はありません。)