[Herokuアドオン]cloudinaryでの画像制限設定について

cloudinaryを利用した時に他者に乱用されたりしないのかどうかを調べてみた。

画像のURL

アップロードする際に、画像名となるpublic_urlを指定しなければランダムで文字列がふられる。

デフォルトでのアップロードの例

https://res.cloudinary.com/harslxcej/image/upload/xa9kfgp9jvxouekmrrqu

harslxcejはcloudinaryアカウトごとの名前。cloud_nameと呼ばれるもの。
Cloud Name | API, URLs and access identifiers | Cloudinary

これだけでも推測は不可能だが、さらにprivateモードを利用することでさらに複雑にすることが可能。

PHPでのアップロード時のオプション

1
2
3
\Cloudinary\Uploader::upload("your-img",array(
    "type" => "private"
));

表示時のオプション

1
2
3
$private = cl_image_tag($public_id . ".jpg", array(
    "type"=>"private"
));

表示URL

http://res.cloudinary.com/harslxcej/image/private/leyxq6ys2wielv6b8yki

しかしこのままではアクセスが出来ない。
このURLでのアクセスを許可してやる必要がある。

編集セットの個別許可

Cloudinaryの管理画面から、Transformationsを選択。
ここに、いままでアクセスしたことがある編集設定などがずらずらと並んでいるので、その中から探し出すか、新たに設定を作成してやる。

Create new

編集設定を作る

Create new

で、許可したい編集セットのDisallowedとなっているマーク部分をクリックすると、Allowedの緑アイコンに代わり、アクセスが許可される。
(編集なしの生データにアクセスを許可してやるには、Create a new transformaton..で何もせずにそのまま保存してやればよい。)

allowed

sign_url

最初はsign_urlをつけないとプライベートのものはアクセス出来ないと思っていたが、上記の方法で解消できた。
以下でもアクセスは出来るが、プライベートタイプのものを表示する方法、という用途ではないと思われる。

"sign_url"=>trueをつけると固定のURLとなるので、編集が不可能になるが、表示が許可されるようになる。

1
2
3
4
$private = cl_image_tag($public_id . ".jpg", array(
    "type"=>"private",
    "sign_url"=>true
));

表示URL

https://res.cloudinary.com/harslxcej/image/private/s–q7MlJXLg–/leyxq6ys2wielv6b8yki.jpg

直リンクは可能

ただし、URLさえわかってしまえば、表示することは可能。
また、いわゆる別サーバーからの直リンク、も制限は出来ない。

編集の制限

cloudinaryはURLから直接画像や動画を編集する事が出来る。
例えば以下のような指定。

https://res.cloudinary.com/harslxcej/image/upload/h_100,w_100,c_fill/xa9kfgp9jvxouekmrrqu

これをプログラムからの指定のみに制限する事が可能。

Cloudinaryの管理画面から、Setting -> Securityにアクセス。
Strict transformations:Enabledにしてsaveする。
これで、URLからの直接編集が禁止となる。

Strict transformations

2つ下の項目に、Strict video transformations:と動画でも同じく禁止する設定があるので合わせて設定しておくとよいかも。

これで、PHPなどプログラム上からの生成以外は制限することができたが、
特定のURLからのみはURLでの編集を許可してやることも可能。

上記、Security画面から、Allowed strict referral domains:に許可したいドメインを指定することで設定できる。

Allowed strict referral domains

参考

Does Cloudinary support uploading private images? – Cloudinary Support
Can our users upload private images which are not accessible through a public URL? – Cloudinary Support
How to quickly build a stock photo site using Cloudinary | Cloudinary Blog

   このエントリーをはてなブックマークに追加