我file_put_contents($path, $image);
用来保存用户将通过插件(slimimagecropper.com FYI)上传的图像。
我担心 XSS。$image
在保存之前检查 XSS的最佳方法是什么file_put_contents()
?
我file_put_contents($path, $image);
用来保存用户将通过插件(slimimagecropper.com FYI)上传的图像。
我担心 XSS。$image
在保存之前检查 XSS的最佳方法是什么file_put_contents()
?
您可以采取一些措施来清理用户上传的内容。里面的一切都可以$_FILES
被操纵,所以完全不要相信它。
文件名:
永远不要相信用户给你的文件名——总是把它保存为一个不同的和经过消毒的输入。image.jpg.php
-> uniquestring_programatically_generated.jpg
。
获取图片大小:
使用该方法getimagesize($filename)
验证它是实际图像,并且它具有大小。
参考: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
}
}