作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只检查上传文件的扩展名是否足够安全?如果不是,我还应该检查什么?
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);
}
}
最佳答案
我要更改的一件事是您的条件:
if(substr($fileName,-4,4)=='.php')
您所做的是将 .php
文件列入黑名单,这本身就很好。但是,(正如对该问题的评论中所指出的那样),您应该改为采用将文件类型列入白名单的方法。所以对于有条件的,你会检查相反的。
逻辑上不是说“如果文件是 .php 则失败”,而是逻辑上说“如果文件不是 .jpg 或 .gif 或 .doc 等则失败”。拥有一个完整的允许类型列表并禁止所有其他类型通常更安全,并有助于防止人们偷偷通过不良文件。
这不是一个完整的安全解决方案,但通常白名单比黑名单更安全。
关于php - 这是保存上传文件的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716805/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!