画像の保存を防止する

mixiDreamweaverコミュで話題に上った、Webページ上の画像保存をどこまで防ぐことが可能かという話。
動機の是非についてはさておき、技術的には興味深い。


単にカジュアルコピー(ドラッグ&ドロップや別名保存程度の)を防ぐだけなら、CSSで背景として表示する程度で事足りる。ついでに背景の指定要素を、同サイズに設定した透過GIFにでもすれば更に効果的。コピーしたつもりが只の透過GIFになる。
或いはJavaScriptでの右クリック禁止Script。しかしJavaScriptを無効にされてしまえば無力。画像の表示自体をJavaScriptで行う(Off状態では画像が表示されない)手もあるが、読み込み後にOffにされると意味がない。
何れにせよ、ちょっとソースが読める程度の知識さえあれば、画像のURLを直接指定して保存も可能。そもそもキャッシュにも取り込まれているだろうし。
それも防止する策として、画像の細分化というのを考えた。例えば32*32程度に分割して並べることで1枚の画像に見せる手法。保存しようとしてもかなりの手間になる。キャッシュから拾ったりページ丸ごとダウンロードしても、利用には結構手間がかかる。作る方はPhotoshop(Elementでは不可能だと思う)があればスライスしてHTML+画像書き出しで簡単に処理できるので、対してコストもかからない。
更に、HTML全体を暗号化するHTML暗号化ソフト「SHTML」を利用する方法もある。これとCSSでの背景表示あたりを組み合わせれば、画像のURLを特定する事自体が不可能になるのでコピーは困難である。


何れにせよ、スクリーンショット一発という簡単なコピー方法を防ぐことは不可能であるので、防止コスト対保存コストの観点からするとどうにも引き合わないのだが。
JavaScriptでPrintScreenキーの妨害なども考えたが、どうやらこれは不可能なようだ。ActiveXを使えばできないこともないが、それもOffにされれば同じこと(画像の表示もActiveXでやった場合はどうなるのだろう?読み込み後Offにすると画像も消える?)。


一応補記しておくと、Webに掲載される以上すべてのソースがコピー可能と割り切るべきで、それを無理矢理妨害しようと思えば利用者の便を損ない、結果として自身の損に繋がるということは理解せねばならない。その上でどうしても防止策を講じようと言うのならばそれはそれで構わないが。