HTTP_RAW_POST_DATA上的输入验证

时间:2016-11-23 08:34:56

标签: php security

我使用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");

你认为它是安全的吗?如果没有,我可以做哪种测试?

由于

1 个答案:

答案 0 :(得分:0)

您使用["abc", "abcd", "abcde", "xyz"]检查文件类型,这是好的和安全的。

但我不会在您的代码中看到对文件大小的任何验证。

黄金法则是永远不要相信客户的意见。所以你应该检查服务器端文件的大小。

您可以查看Owasp网站,该网站提供了有关文件上传的一些良好做法:https://www.owasp.org/index.php/Unrestricted_File_Upload