这是保存上传文件的安全方法吗?

| 仅检查上传文件的扩展名是否足够安全?如果不是,我还应该检查什么?
public function saveUploadedFile($fileInputName, $fileLocation)
    {
        $fileName=$_FILES[$fileInputName][\'name\'];
        if(substr($fileName,-4,4)==\'.php\')
        {
            my_error(\'have some cake\');
            return FALSE;       
        }
        else 
        {
            move_uploaded_file($_FILES[$fileInputName][\'tmp_name\'],$fileLocation.$fileName);
        }
    }
已邀请:
您应该检查扩展名,大小为
filesize($filename)
; MimeType
finfo_open(FILEINFO_MIME_TYPE);
(如果使用的是PHP 5.3以上;应该检查文件是否存在
file_exists($filename)
;我认为应该这样做。还应该检查其他扩展名,例如.js,.phtml等。除非要上传这些文件到您的服务器。 祝好运。
我要更改的一件事是您的条件在这里:
if(substr($fileName,-4,4)==\'.php\')
您正在做的是将
.php
文件列入黑名单,这本身就很好。但是,(如对该问题的评论中已指出的那样),您应该改为将文件类型列入白名单。因此,对于有条件的情况,您将检查相反的情况。 与其逻辑上说“如果文件为.php失败,”,而是从逻辑上说类似“如果文件不是.jpg,.gif或.doc等,则失败”。类型和禁止所有其他类型通常更安全,并有助于防止人们偷偷偷走坏文件。 它不是一个完整的安全解决方案,但总的来说,白名单比黑名单更安全。

要回复问题请先登录注册