研究了很多篇 php 上传文件的安全和漏洞处理,不外乎都是在对文件后缀名上面做文章,现在我只允许用户上传特定后缀的文件,比如:pdf, doc, psd 这三种后缀名,然后文件命名格式全部统一为:md5($file).'.pdf'(或者.doc 和 psd )是不是对我的服务器而言就彻底安全了?
1
GDC 2019-01-21 13:29:50 +08:00 via iPhone
不是的,前几天还看到一篇如果搭配 include 的话还是有风险,具体的细节没细看,你可以找找。
我现在的做法是,如果上传的文件只是存储,日后用户自己下载的,那直接从前端上传到又拍云之类的 cdn,速度快,还可以给服务器减少带宽压力。 |
2
win7pro 2019-01-21 13:51:14 +08:00 via Android
不能只是判断文件后缀,还要判断文件头信息内的文件类型是不是白名单类型。
|
4
lshero 2019-01-21 13:56:31 +08:00 1
上传的路径设置不可执行,才是解决这类问题的最终方法
|
5
crab 2019-01-21 13:57:32 +08:00
不给执行权限
|
6
AngryPanda 2019-01-21 14:04:00 +08:00 1
不是。曾经有个很著名的文件上传漏洞,在图片内部添加可执行代码。这样即便你检查 mime-type 也不行。
隔离上传的文件(禁止该目录的执行权限,最简单上传到云存储)才是王道。 |
7
kisshere OP @AngryPanda 能给个该漏洞的链接吗?谢谢
|
8
masker 2019-01-21 14:07:58 +08:00 via Android
直传 oss
|
9
woodie1994 2019-01-21 14:10:43 +08:00
burpsuite 00 截断
|
10
king2014 2019-01-21 14:15:59 +08:00
|
11
lanyi96 2019-01-21 14:24:34 +08:00 1
可以解决 80%的安全问题,但是还有 10%
包括: 本地文件包含 中间件解析漏洞 图片组件漏洞 这些都是可以突破验证,产生安全问题的 |
13
wjfz 2019-01-21 18:37:11 +08:00
|
14
zjsxwc 2019-01-22 08:52:44 +08:00
需要配合 php 多入口方式,单文件入口很难
|