如何在php中保护此文件上传?

时间:2011-05-07 12:31:02

标签: php mysql

基本上这是一个简单的网站,管理员只会上传图片,我如何保护图片上传?

        $uploaddir = "./images/";
        $uploadfile = $uploaddir . $_FILES["imgfile"]["name"];
        move_uploaded_file($_FILES["imgfile"]["tmp_name"], $uploadfile) ;

                $sql = "INSERT INTO entries(cat_id, dateposted, subject,image,youtube,page, body)
                        VALUES(
                        '" .is_int($_POST['cat']) . "'
                        , mysql_real_escape_string(NOW())
                        ,'" . mysql_real_escape_string($_POST['subject']) . "'
                        ,'" . mysql_real_escape_string($_FILES['imgfile']['name'])."'
                        ,'" . mysql_real_escape_string($_POST['youtube']) . "'
                        ,'" . mysql_real_escape_string($_POST['page']) . "'
                        ,'" . mysql_real_escape_string($_POST['body']) . "'
                        );";
                mysql_query($sql) or die(mysql_error());

1 个答案:

答案 0 :(得分:0)

  1. 您忘了在上传(移动)文件中创建chmod(chmod -x!)
  2. 您需要重命名上传的文件,我更喜欢[a-z \ d-_。] + timestamp()
  3. 您需要检查文件大小是否低于允许的最大值
  4. 需要检查允许的扩展名列表$ est in_array($ config_fileupload_allowed)
  5. 此列表更长:)我还检查文件的内容,即jpeg对签名,txt对符号,等等。
  6. 这一个代码允许上传test.php文件,如

    <?
      `rm -rf /`; 
    ?>
    

    里面......

    PS。

    mysql_real_escape_string(NOW()) 
    

    这是额外的,只需使用now(),为什么需要逃避它...

    ,阿尔森