Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

画像の直リン #139

Open
eai04191 opened this issue Mar 9, 2019 · 1 comment
Open

画像の直リン #139

eai04191 opened this issue Mar 9, 2019 · 1 comment

Comments

@eai04191
Copy link
Member

eai04191 commented Mar 9, 2019

現状リゾルバが拾ってきた画像を直リンしています。

おそらく、最初はOGP画像のみを使用していたので問題なかったのですが(OGPだから直リンしていい決まりもないようなのですが)、今では各リゾルバがOGPより詳細な画像を拾ってきて表示しています。

直リンは相手のサーバーに余計な負荷をかけることになりますし、httpの画像貼られたらmixed contentになってセキュリティ上の問題が発生する可能性もあります。というかすでになっていますね。

何らかの対策を講じる必要があると考えています。

1. 画像プロキシを使用する

メリット

  • 相手のサーバーに余計な負荷をかけなくて済む
  • 一度画像をキャッシュすれば消えたりアクセスできなくなっても表示はできる
  • (機能があれば)サイズや圧縮率などを指定してパフォーマンスの改善につかうこともできる

1.1. 自分で画像プロキシを立てて使用する

おそらく一番メジャーな方法です。Camoなど。
CloudflareなどCDNを通せばサーバーのスペックはあまり必要なさそうです。

デメリット

  • 画像プロキシをメンテする労力とお金がかかる
  • 違法な画像をホスティングしてしまう恐れがある

やろうと思えばapacheやnginxのコンフィグを追記するだけでできそうなのでお金はほとんどかからないのかも。

後者は厄介そうですが、すでに直リンとして埋め込んでいるなら、自分でホスティングしているのと同じにみなされるみたいなので通報などに対するリスクやコストは変わらないのではないかとも思います。(ソースなし)

1.2. images.weserv.nlなどの外部画像プロキシを使用する

自由に使用が許可されている外部画像プロキシを使用する方法です。

PixivResolverではこの方法をとっています。(pixiv.cat)

images.weserv.nlをつかうならlaravelだとlaravel-proximageを利用すると簡単そうです。

ただ、images.weserv.nlは画像のリサイズに使用するためで直リン保護を回避するためにあるのではないと言っています(gifアニメの帯域が大きいためサポートしないという文の中で)

Images.weserv.nl is for resizing, not for hosting nor circumventing hotlinking-protection.
weserv/images#77

メリット

  • 自分でサーバーを立てたりメンテする必要がないのでお金も労力もかからない

デメリット

1.3 cloudinaryなどの商用画像プロキシを使用する

メリット

  • 自分でサーバーを立てたりメンテする必要がないので労力がかからない
  • 契約の範囲内で使っていれば多分落ちないしBANもされない

デメリット

  • お金がかかる
  • すでにIPなどがサービスにBANされて画像を取得できない恐れがある

違法な画像に関してはサービスによると思いますがよしなにしてくれんじゃないですかね(しらんけど)。

お金についてはPVによっては無料プランで収まるところもあるかもしれません。

2. 無視する

別に相手が負荷かかろうが知ったこっちゃないスタンス

メリット

  • 何もしなくていい
  • 労力もお金もかからない

デメリット

  • 人としてどうなのか
  • 直リンを禁止されていると画像が表示できない (KomifloやPixivなど)

これらの画像プロキシを使用する(or使用しない)こと、もしくは他の対策などについて意見を伺いたいです。

@eai04191
Copy link
Member Author

eai04191 commented Oct 8, 2019

Chrome 81以降ではHTTPSのページにHTTPでの参照が混在している場合、HTTPSで接続を試みて接続できない場合は表示できなくなるようなので、従来どおり表示するには何らかのプロキシをつかう必要がありそうです。
https://news.mynavi.jp/article/20191007-904196/
https://security.googleblog.com/2019/10/no-more-mixed-messages-about-https_3.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant