[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 |
|
表示時のオプション
1 2 3 |
|
表示URL
http://res.cloudinary.com/harslxcej/image/private/leyxq6ys2wielv6b8yki
しかしこのままではアクセスが出来ない。
このURLでのアクセスを許可してやる必要がある。
編集セットの個別許可
Cloudinaryの管理画面から、Transformations
を選択。
ここに、いままでアクセスしたことがある編集設定などがずらずらと並んでいるので、その中から探し出すか、新たに設定を作成してやる。
編集設定を作る
で、許可したい編集セットのDisallowed
となっているマーク部分をクリックすると、Allowed
の緑アイコンに代わり、アクセスが許可される。
(編集なしの生データにアクセスを許可してやるには、Create a new transformaton..
で何もせずにそのまま保存してやればよい。)
sign_url
最初はsign_url
をつけないとプライベートのものはアクセス出来ないと思っていたが、上記の方法で解消できた。
以下でもアクセスは出来るが、プライベートタイプのものを表示する方法、という用途ではないと思われる。
"sign_url"=>true
をつけると固定のURLとなるので、編集が不可能になるが、表示が許可されるようになる。
1 2 3 4 |
|
表示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からの直接編集が禁止となる。
2つ下の項目に、Strict video transformations:
と動画でも同じく禁止する設定があるので合わせて設定しておくとよいかも。
これで、PHPなどプログラム上からの生成以外は制限することができたが、
特定のURLからのみはURLでの編集を許可してやることも可能。
上記、Security
画面から、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