ホームページ >バックエンド開発 >PHPチュートリアル >画像アップロードのセキュリティに関する質問

画像アップロードのセキュリティに関する質問

WBOY
WBOYオリジナル
2016-06-23 14:19:281197ブラウズ

通常、私はサフィックス名のみを確認します。
たとえば、abc.jpg をアップロードし、最終的に /xxx/xxx.jpg に配置します

しかし、今日、ある記事を見ました
原理は、コードを作成してアップロードします。
この時点でコードを実行しますか?

百度でずっと検索してたら10年前の情報が出てきたんですが、どうやらこれってASPに関係があるのでは?
この PHP にもこの脆弱性があるかどうかお聞きしたいのですが?
ファイルをアップロードするときにサフィックスのみを確認しても安全ですか?


ディスカッションへの返信 (解決策)

php についても同様で、アップロード後、最初にそれが実際の画像ファイルであるかどうかを判断してから、それに相当する透明なウォーターマークを付けるのが最善です。元の画像を「破壊」すること

同じことが php やアップロードにも当てはまります。将来的には、最初にそれが実際の画像ファイルであるかどうかを判断し、次に透明な透かしを入れることが最善です。これは、元の画像を「破壊する」ことと同じです。元の画像

判断方法
ウォーターマークの追加についてはそのような考慮事項はありません

安全ではありません...
通常は Suffix 名を確認するだけですが、
たとえば、abc.jpg をアップロードし、最終的に /xxx/xxx.jpg に置きます

でも、今日ある記事を見ました
原則は、コードで JPG 画像を作成し、それをアップロードすることです。
この時点でコードを実行しますか?

百度でずっと検索してたら10年前の情報が出てきたんですが、どうやらこれってASPに関係があるのでは?
この PHP にもこの脆弱性があるかどうかお聞きしたいのですが?
ファイルをアップロードするときにサフィックスのみを確認しても安全ですか?


同じことが php にも当てはまります。アップロード後、最初にそれが実際の画像ファイルであるかどうかを判断してから、元の画像を「破棄する」ことと同じ、透明な透かしを挿入するのが最善です。裁判官
ウォーターマークの追加についてそのような考慮はありません

Baidu はい、あります。 。 。

このような問題がまだあることが判明しました。 。多くを学んだ!

安全ではありません...

チェックすべき項目は何ですか?

百度にはそれがあります。 。 。

画像サイズを取得しますか?

if (preg_match('/ die('ヒント! この画像には禁止されたコード '.str_replace('?', '?', $m_err[0]) が含まれています。'); base64_decode|base64_encode/i', @file_get_contents($_FILES['uploadfile']['tmp_name']), $m_err)) {

die('ヒント! 投稿は禁止されています。この画像には禁止されたコードが含まれています' .str_replace('? ', '?', $m_err[0]).'. ');
}

を実行するなど、簡単な画像で試していただけますか?一時保存ディレクトリを含む、写真が保存されているすべてのディレクトリのアクセス許可を「読み取り可能、書き込み可能、​​および実行不可能」にします

2. 写真が本物であるかどうか、jpg などをテールカットする必要があるかどうかを確認します。画像の形式を理解すること、画像の末尾にある「余分な」バイトを破棄すること、そして検索で関連記事を見つけることができます


基本的にこの 2 つのポイントを実行すれば、比較的安全になります。特に最初のポイントはとても重要です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。