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