4

PHP でエンコードされた base64 の画像を検証する方法を見つける必要があります。

検証することで、XSSやその他のセキュリティに関することを考えています。

フローは次のとおりです。

ユーザーには、画像のbase64エンコード文字列に1つ以上のパラメーターがあり、それらを私のサイトに投稿します。base64でエンコードされた画像文字列を値としてimg1というパラメータfxを受け取ると。

次に、このbase64でエンコードされた文字列が画像のみで構成され、ハッカーが使用しようとするタグやその他のものがないことを確認したいと思います.

私を助けることができるPHP関数またはプラグインを知っている人はいますか?

4

5 に答える 5

4

imagecreatefromstring関数を使用して、文字列から画像を作成してみることができます。

次に、画像のサイズ/タイプをテストできます。

さらに一歩進んだ場合は、新しいイメージを作成してから、ユーザーイメージをそのイメージにコピーして、これを最終イメージとして使用することができます。最終的な画像は最初にあなたが作成したものなので、ハッカーが通り抜ける可能性は非常に低いです。

于 2012-09-03T13:58:14.957 に答える
0

base64でエンコードされた文字列だけを取得し、それを画像タグに入れます。しかし、セキュリティは私が構築しているシステムで非常に重要なことなので、XSSのようなものがbase64でエンコードされた画像で使用できないことを確認する必要があります:)

次に、他のユーザー入力と同様にこれを行いますhtmlspecialchars。HTMLに挿入する前に、ユーザーが提供したテキストをエンコードして、HTMLの整合性を維持します。Base64イメージ文字列も例外ではありません。Great Escapism(または:テキスト内のテキストを操作するために知っておくべきこと)を参照してください。

もちろん、画像データのブロブは、脆弱な画像パーサーを介してまったく異なる攻撃ベクトルにさらされる可能性があります。そのため、最初にその画像文字列を画像リソースにデコードし、gdまたはImagick関数を使用して再度保存することをお勧めします。つまり、画像を開いて再保存/再エンコードします。

于 2012-09-06T10:17:57.310 に答える
0
$str = 'your  base64 code' ;

if (base64_encode(base64_decode($str, true)) === $str && imagecreatefromstring(base64_decode($img))) {
echo 'Success! The String entered match base64_decode and is Image';
}
于 2017-10-21T12:54:17.187 に答える
0

このライブラリを試す

https://github.com/imaimai86/Intervention-Base64Image

介入イメージ ライブラリを使用して、base64 でエンコードされたイメージを検証します。

于 2016-10-09T10:00:08.920 に答える