私はプラグイン(slimimagecropper.com FYI)を通じてユーザーがアップロードする画像を保存するためにfile_put_contents($path, $image);
を使用しています。file_put_contents()で保存した画像を検証するにはどうすればよいですか?
私はXSSを心配しています。 で保存する前に、XSSの$image
をチェックする最良の方法は何ですか?
私はプラグイン(slimimagecropper.com FYI)を通じてユーザーがアップロードする画像を保存するためにfile_put_contents($path, $image);
を使用しています。file_put_contents()で保存した画像を検証するにはどうすればよいですか?
私はXSSを心配しています。 で保存する前に、XSSの$image
をチェックする最良の方法は何ですか?
参考:PHP Validating the File Upload
コンテンツが画像であれば、あなたは検証する必要があります検証するには、次のように.PHP
拡張子とMIMEタイプ検証する(基準から引用)このコードを使用してみてください:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
、その内容を検証するためにこのコードを(基準から撮影
$file = $_FILES['file']['tmp_name'];
if (file_exists($file)) {
$imagesizedata = getimagesize($file);
if ($imagesizedata === FALSE) {
//not image
} else {
//image
}
}
ユーザーのアップロードをサニタイズする方法はいくつかあります。 $_FILES
のすべては操作できますので、それを信用しないでくださいにすべて。
ファイル名:
は、ユーザーがあなたに与えられたファイル名を信頼ことはありません - 常に異なると消毒入力として保存します。 image.jpg.php
- >uniquestring_programatically_generated.jpg
。
Getimagesize:
それは実際のイメージだし、それは大きさを持って検証する方法getimagesize($filename)
を使用してください。
ファイルタイプがイメージであるかどうかを確認し、イメージ拡張子で保存する必要があります。人々は '$ image'をどのようにアップロードしますか? – Antony
ありがとうございます。彼らはプラグイン(slimimagecropper.com)を使ってアップロードします。プラグインは$ _FILES配列を見て画像を取得します。私が見る限り、このプラグインはXSSチェックサーバー側を行いません。なぜ、 'file_put_contents()'を書き込むプラグインコードを変更したいのですか? – Nadine