Php HTTP\u原始\u POST\u数据的输入验证
我使用的是xarg.org上的jQuery网络摄像头插件,这个插件可以使用用户网络摄像头,这要感谢flash应用程序和take snap 拍摄快照时,图像被发送到php脚本,以便通过HTTP_RAW_POST_数据保存图像。作者提出这样一个脚本:Php HTTP\u原始\u POST\u数据的输入验证,php,security,Php,Security,我使用的是xarg.org上的jQuery网络摄像头插件,这个插件可以使用用户网络摄像头,这要感谢flash应用程序和take snap 拍摄快照时,图像被发送到php脚本,以便通过HTTP_RAW_POST_数据保存图像。作者提出这样一个脚本: <?php $str = file_get_contents("php://input"); file_put_contents("/tmp/upload.jpg", pack("H*", $str)); ?> 你认为它安全吗?如果没有,
<?php
$str = file_get_contents("php://input");
file_put_contents("/tmp/upload.jpg", pack("H*", $str));
?>
你认为它安全吗?如果没有,我可以做什么样的测试
谢谢您可以使用
getimagesize()
检查文件类型,这很好,也很安全
但是我在您的代码中看不到对文件大小的任何验证
黄金法则是永远不要相信客户的输入。因此,您应该检查服务器端文件的大小
您可以查看Owasp网站,该网站提供了一些关于文件上传的良好实践:旁注-我认为
is_array()
不会触发警告,您需要使用@
使其静音。但是,mime
是一个未定义的常量,它将抛出一个通知。我建议您检查PHP开发框中的错误报告设置。
$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");