我使用xarg.org的jQuery网络摄像头插件,这个插件允许使用用户网络摄像头,这要归功于Flash应用程序并拍摄快照。
拍摄快照时,图像将发送到php脚本,以便通过HTTP_RAW_POST_DATA保存图像。作者提出了这个脚本:
<?php
$str = file_get_contents("php://input");
file_put_contents("/tmp/upload.jpg", pack("H*", $str));
?>
我的问题是输入验证,我不知道如何从HTTP_RAW_POST_DATA测试数据。
我在上一个脚本之后添加了这个测试:
$imageOK=true;
$imagesize = getimagesize("views/img/order.jpg");
if(@is_array($imagesize)){
if($imagesize[mime]!="" && $imagesize[mime]=="image/jpeg"){
$imageOK=true;
}
else {
$imageOK=false;
}
} else {
$imageOK=false;
}
if(!$imageOK)
unlink("views/img/order.jpg");
你认为它是安全的吗?如果没有,我可以做哪种测试?
由于
答案 0 :(得分:0)
您使用["abc", "abcd", "abcde", "xyz"]
检查文件类型,这是好的和安全的。
但我不会在您的代码中看到对文件大小的任何验证。
黄金法则是永远不要相信客户的意见。所以你应该检查服务器端文件的大小。
您可以查看Owasp网站,该网站提供了有关文件上传的一些良好做法:https://www.owasp.org/index.php/Unrestricted_File_Upload