我使用file_put_contents($path, $image);
保存用户将通过插件上传的图片(slimimagecropper.com FYI)。
我很担心XSS。在使用$image
保存之前检查file_put_contents()
XSS的最佳方法是什么?
答案 0 :(得分:2)
您可以采取一些措施来清理用户上传内容。 $_FILES
中的所有内容都可以被操纵,所以不要相信它 。
<强>文件名:强>
永远不要相信用户提供给您的文件名 - 始终将其保存为不同的清理输入。 image.jpg.php
- &gt; uniquestring_programatically_generated.jpg
。
<强>和getimagesize:强>
使用getimagesize($filename)
方法验证它是实际图像,并且它有一个大小。
答案 1 :(得分:1)
参考:PHP Validating the File Upload
要验证内容是否为图片,您应该验证:
尝试使用此代码(摘自参考)来验证扩展名和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
}
}