この質問は、公開されているチャットボードに掲載されている外部Webページへのリンクから切り取ったOpen Graph画像をサイトが盗み、保存して埋め込む際に、Open Graphから安全に画像をアップロードして配信する
私は、ユーザーが外部ページへのリンクを投稿できるチャットフォーラムアプリケーション(Apache/PHP/WordPress)を持っています。オープングラフの画像、タイトル、説明を安全に保存して埋めたいあなたがリンクを投稿するとします。
FacebookはOpen Graphデータをスクラップすることでこれを行い、おそらく永続性とパフォーマンスのために、自分のサーバーにローカルバージョンのイメージを保存します。同じようにOGイメージをローカルに保存したいと思います。これにより、サイズを変更して、それをスムージングし、将来保存することができます。
私はGitHubでOpen Graph Protocol helper for PHPを使用して、素晴らしい作業をしています。
しかし、私の懸念の例は、GitHubのソース自体に例で示されている - それは腐ったトマトからページを引っ張ると、OGのイメージは、この形式になっています。
https://resizing.flixster.com/Er0hIAp55dpRWn5HQTrPc1f2hZE=/740x290/v1.bjs5NzU2NjtqOzE3MDExOzEyMDA7MTEyMDs4NDA
拡張子はありませんこのURLには拡張子があってもそれが間違っている可能性があることを知っています。画像をアップロードして配信すると、ユーザーに公開する可能性のある悪質なコードが画像に存在する可能性があります。
私の現在のセキュリティアプローチはが含まれています(?)
使用PHPのexif_imagetype()確実にファイルの種類を確認してください。画像がPNG、JPG、GIFなどと一致しない場合は、拒否してください。
- は.htaccessを持つアップロードディレクトリをロックダウンし、明示的にWebルートの外にスクリプト実行
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI
ストア画像を禁止し、それを提供するために、PHPの関数(例えばimagecreatefromjpeg)を使用します。
が私の目標(引っかき画像、プロセス、店舗、埋め込む)を考えると
(例えば770 chmodの)アップロードディレクトリを制限し、私はさらに緩和することができる任意のセキュリティホールをしないのですか?この方法で提供されるイメージが(比較的)安全であることを保証するために推奨できるライブラリやその他の機能はありますか?
_ _ https://kb.yoast.com/kb/getting-open-graph-for-your-articles/「の画像は、私は私のユーザーは、私がアップロードする場合は公開して画像を果たす可能性があり、悪意のあるコード抱く可能性」 - Iをかなり疑問けれどもリサイズ生き残ることを。 (おそらく、EXIFのメタデータでは、それをきれいにする/除きたいかもしれません。) – CBroe
@CBroe優れた解決策ですが、[このディスカッション](https://www.idontplaydarts.com/2012/06/encoding-web-shells -in-png-idat-chunks /)は、サイズ変更を生き残ったPNGについて私にsnakebitを与えます。エクスプロイトがあまりにも遠いと思っていますか、それとも文書化されているので、予測可能なベクトルですか? –