16500


WEBアプリケーションを前提としています。

通常、HTMLへの埋め込み、CSSでの埋め込みで画像を表示しますが、  
クライアントが(※完全な画像を)ダウンロードできない画像を表示するWEBサービスを発見しました。  
解像度の落ちた画像はDL可能なようです。

携帯用写真アップローダーのようですが、先日発見したアップローダーが下記になります。  
<http://vpic.to/150810H6O6>

右上に、再配布NGとなっており、NGの場合は写真をクリックできないようになっているようです。  
再配布可の場合は写真をクリックすると、完全な解像度の画像を表示するようになっています。

解像度を落とした画像と、通常のアップロードされた画像の2種類を作成すれば可能かと思われますが、このサイトの場合、正規画像のURLを見つけてしまえば正規画像はDL可能なのでしょうか？

また、アップロードされた正規画像を参照(ブラウザで表示)することはできても、DLすることはできない(PC・モバイル問わず)ということは技術的に可能なのでしょうか？


CC BY-SA 3.0
2015-09-10T11:05:17.227
16474
2015-09-11T02:24:37.163
2015-09-11T01:30:38.380
8396
8396
question
画像
画像の無断ダウンロードを禁止する仕組みは可能なのでしょうか？


ダウンロードしないと表示もできないので、ダウンロードを技術的に防ぐ事は（一般的なブラウザを対象とする限り）出来ません。  
画像の保存を面倒にする方法はいろいろあると思います。

例として出されたURLですと、まず再配布NGの物には画像ファイルへのリンクが設定されてません（これは、まあ普通の事です）。  
多少こっているのは、画像が表示されている位置に以下の二つの DOM が生成されている事です。

[code]

    <img class="protect" src="http://image.vpic.to/mail/data/150810/150810H6O6/01.gif" border="0">
    <img style="top: 115px; left: 80px; position: absolute; z-index: 10;" name="blank" src="/img/blank.gif" height="175" width="160">
    
[/code]

最初の`img`要素が本物の画像であり、次の`img`要素は`blank.gif`という名からも明らかですが、ダミーです。  
ダミー要素の生成には`JavaScript`を使っているようですね。  
ブラウザには、これらが重ねて表示されます。ユーザが操作しようとすると、手前（Z軸で上）に設定されているダミーへの操作になるので、通常の手順では画像の保存が出来ないという仕組みです。

どちらにせよ、一手間かければ保存できますので、ちょっとした嫌がらせといった所です。

（もちろん、表示している物とは別に高解像度の画像があるのなら、それはダウンロードを制限できます。だだ、表示もダウンロードもさせないのですから、サーバに置いておく必要もないことになります）


CC BY-SA 3.0
2015-09-11T02:15:46.593
16499
2015-09-11T02:24:37.163
2015-09-11T02:24:37.163
3054
3054
16474
answer


先に言いますと、Webアプリケーションで完全に無断ダウンロードを禁止することは不可能です。

画像を表示するために画像の情報を絶対にダウンロードしなくてはならないためです。  
ただ、そのダウンロードを減らす意味合いでなら色々と方法があります。

１．画像の表示方法を考察する  
画像をバイナリで取得してcanvasなどでレンダリングするとかですかね  
canvasでレンダリングする事で単純に画像をダウンロードする事を防ぐ事が出来ます。  
\-----  
バイナリからでも、データを取得出来れば出力できます。  
通信を傍受されたりすれば解析されます。  
２．画像にオブジェクトをオーバーレイする  
要素をクリックなど要素にアクセスしづらくさせることで  
右クリックなども防げます。  
\-----  
邪魔な要素を削除していけば画像にたどり着けるのであまり意味は無いです。  
３．マウスイベントを無効にする  
マウスイベントを無効に出来れば、右クリックからのメニューなどを防げます。  
\-----  
Javascriptなどスクリプトの実行を制限することで無効化可能です。  
ただし"1"と組み合わせればスクリプトを実行しなければ画像を表示できない状態に持っていけます。  
これも絶対ではないですが、結局Webコンソールで解析されるとダメですね。

こんな感じでしょうか？


CC BY-SA 3.0
2015-09-11T02:22:58.570
16500
2015-09-11T02:22:58.570
7676
16474
answer