我的问题是避免用户在我的web服务器上上传恶意文件。
我在linux环境(debian)上工作。
实际上,上传是通过以下代码通过php处理的:function checkFile($nomeFile, $myExt = false){
if($myExt != false){ $goodExt = "_$myExt"."_"; }else{ $goodExt = "_.jpg_.bmp_.zip_.pdf_.gif_.doc_.xls_.csv_.docx_.rar_"; }
$punto = strrpos($nomeFile, '.');
$ext = "_".substr($nomeFile, $punto, 8)."_";
if(stristr($goodExt, $ext)){ return 1; }else{ return 0; }
}
在这里我可以指定允许上传的扩展名,如果文件不符合要求,我会在上传完成后立即删除。
但这样,用户就可以通过简单的重命名来更改文件扩展名。。这对我不好;即使file.exe(例如)如果在file.jpg中重命名就永远不会执行(我说得对吗?),我不想在我的服务器上有潜在的危险文件。
有一种方法,在php、python中,或者unix系统可以轻松地运行什么,来检查文件的真正类型?
我尝试过python mimetypes模块,但它检索了文件的ipotetic mime类型。。基于扩展-.-