静的 jpg / png およびアニメーション gif ファイル (ファイルが gif であるが、アニメーション化されていない場合は、png にします)。
ボーナス情報: Amazon EC2 サーバーで PHP のアップロード スクリプトを実行しており、イメージを Amazon S3 バケットにアップロードします。それが何かを変えるなら、教えてください。
おまけ情報 2: この問題を解決した後、画像の下に DAMNLOL のような透かしを追加したいと考えています ( http://www.damnlol.com/i/916d72c17e572b14a14c283b2f96f997.jpgのように)。
今までどのように問題を解決したか:
ユーザーはフォームまたは URL からアップロードするファイルを選択し、PHP スクリプトに進みます (ユーザーが中止しても中止されません)。
スクリプトは画像を取得し、いくつかのチェックを行います: 最大ファイル サイズは、
$_FILES['file']['type']
"image/gif"、"image/png"、"image/jpg" でなければなりません。最大/最小の幅と高さのチェック。すべて問題なければ、続行します。- ユーザーが自分のローカル コンピューターから画像をアップロードする場合は、その画像を一時的な名前でサーバーに保存します。その後、php スクリプトは、CURL と一時 URL を入力としてhttp://regex.info/exif.cgiを呼び出します。
- または、送信された URL の場合、php スクリプトは、CURL と送信された URL を入力としてhttp://regex.info/exif.cgiを呼び出します。
Jeffrey (Jeffrey は Jeffrey の Exif ビューアー (regex.info/exif.cgi) の略です) が応答します。画像のタイプが実際に PNG、JPG、または GIF であることを示す場合、スクリプトはファイルをダウンロードするか (送信された URL の場合)、ファイルを最終的な画像フォルダーに移動します (アップロードされた画像の場合)。成功!
ご覧のとおり、URL 経由でファイルを送信すると、スクリプトは脆弱になり、その URL は Jeffrey を有効な画像にリダイレクトしますが、私のサーバーは悪意のあるコードにリダイレクトします。少なくとも私はそう思います。
このソリューションは遅いですが、私の意見ではかなり安全です。ファイルのサイズにもよりますが、アップロードには 2 ~ 5 秒かかります。GIF は 4 ~ 10 秒かかる傾向があります。他のサイトはそれほど時間はかからず、安全です。
問題を解決する方法に関するアイデア:
どうやら Jeffrey は、実際のファイルの種類を毎回見つけることができるようです。PHPにそのような防弾方法はありますか? 明らかに、ファイルの名前でファイルの種類を決定することは、これを解決するための非常に貧弱な方法です。
情報 2 と組み合わせると、送信された画像を取得し、幅と高さの情報を取得し、(new_image_width = submit_image_width, new_image_height = submit_image_height + watermark_height) を使用して新しい空白の画像を作成し、送信された画像をその下に透かしを付けて保存できます。プロセス全体が失敗した場合、送信された画像のタイプは JPG / PNG / GIF ではなく、スクリプトは中止されます。アニメーション GIF に透かしを追加するときは少し難しいかもしれませんが、明らかに可能です (--> http://forgifs.com/gallery/d/206365-1/Fitness-ball-roof-jump.gif )。
私のアイデアについてどう思いますか?この特定の問題に対する詳細な解決策はありますか? 私はそれについて長い間知っていて、このトピックについていくつかの調査を行いましたが、「最善の」解決策は見つかりませんでした.
お時間をいただきありがとうございます。ついにこの問題を解決し、Google でこの問題の解決策を日々探している何千人もの人々を助けてくれますように。