サイトユーザーがリモートの「ホットリンク」画像を提供する必要があります。リモートの「ホットリンク」画像を安全に処理する
1)PHPのパス情報を使用して提供パスを解析し、適切にエスケープされている部品(ホスト、ファイル名、拡張子)へのパスを破る:
私はので、ここで現在の手順ですが、これはちょっと危険です実現します。
2)How can one check to see if a remote file exists using PHP?に記載されているようにイメージヘッダーのカール要求を実行し、有効なpngまたはjpg MIMEタイプとHTTP 200戻りコードがあることを確認します。
3)最後に、複数の画像経路データを格納)
4(私はGIFファイル等を受け付けていないよ)上記パス情報からファイル名と拡張子()は、有効なPNGまたはJPGファイルであることを確認DB内の列(データをエスケープする)
何か不足していますか?まだ潜んでいる危険はありますか?私はおそらく、画像がまだそこに残っていることを確認するために、また画像であることを確認するために、表示終了時にカール機能を再実行する必要があると考えていました。
ありがとうございました。
さらにスマートにしたい場合は、実際のデータを取得してからPHPでイメージオブジェクトを作成してみてください。しかし、この時点で何をしても、誰かがリモートサーバーに正しいイメージを置くことを妨げることはありません。あなたにURLを提供し、そのイメージを悪質なものに変更します。 –
@AleksG - ええ、それは問題です。なぜ私はそれを保存するだけでなくディスプレイ上でカールするのが最善だろうと思っています。しかし、これはリモートイメージを許可する目的をほとんど奪っています(一時的であっても、帯域幅ヒットとストレージヒットが発生するため) – julio
なぜこれをやりたいのですか?パスが監査されない場合、どのようなリスクを恐れていますか? – Gumbo