V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX  ›  程序员

PHP 上传文件处理,是不是只要强制文件名+后缀名,服务器就安全了?

  •  
  •   kisshere · 2019-01-21 13:05:47 +08:00 · 2642 次点击
    这是一个创建于 1916 天前的主题,其中的信息可能已经有所发展或是发生改变。

    研究了很多篇 php 上传文件的安全和漏洞处理,不外乎都是在对文件后缀名上面做文章,现在我只允许用户上传特定后缀的文件,比如:pdf, doc, psd 这三种后缀名,然后文件命名格式全部统一为:md5($file).'.pdf'(或者.doc 和 psd )是不是对我的服务器而言就彻底安全了?

    14 条回复    2019-01-22 08:52:44 +08:00
    GDC
        1
    GDC  
       2019-01-21 13:29:50 +08:00 via iPhone
    不是的,前几天还看到一篇如果搭配 include 的话还是有风险,具体的细节没细看,你可以找找。
    我现在的做法是,如果上传的文件只是存储,日后用户自己下载的,那直接从前端上传到又拍云之类的 cdn,速度快,还可以给服务器减少带宽压力。
    win7pro
        2
    win7pro  
       2019-01-21 13:51:14 +08:00 via Android
    不能只是判断文件后缀,还要判断文件头信息内的文件类型是不是白名单类型。
    kisshere
        3
    kisshere  
    OP
       2019-01-21 13:56:29 +08:00
    @win7pro mime type 也可以伪造啊
    lshero
        4
    lshero  
       2019-01-21 13:56:31 +08:00   ❤️ 1
    上传的路径设置不可执行,才是解决这类问题的最终方法
    crab
        5
    crab  
       2019-01-21 13:57:32 +08:00
    不给执行权限
    AngryPanda
        6
    AngryPanda  
       2019-01-21 14:04:00 +08:00   ❤️ 1
    不是。曾经有个很著名的文件上传漏洞,在图片内部添加可执行代码。这样即便你检查 mime-type 也不行。

    隔离上传的文件(禁止该目录的执行权限,最简单上传到云存储)才是王道。
    kisshere
        7
    kisshere  
    OP
       2019-01-21 14:05:27 +08:00
    @AngryPanda 能给个该漏洞的链接吗?谢谢
    masker
        8
    masker  
       2019-01-21 14:07:58 +08:00 via Android
    直传 oss
    woodie1994
        9
    woodie1994  
       2019-01-21 14:10:43 +08:00
    burpsuite 00 截断
    king2014
        10
    king2014  
       2019-01-21 14:15:59 +08:00
    lanyi96
        11
    lanyi96  
       2019-01-21 14:24:34 +08:00   ❤️ 1
    可以解决 80%的安全问题,但是还有 10%
    包括:
    本地文件包含
    中间件解析漏洞
    图片组件漏洞
    这些都是可以突破验证,产生安全问题的
    kisshere
        12
    kisshere  
    OP
       2019-01-21 14:32:10 +08:00
    @lanyi96 还有 10%呐?
    wjfz
        13
    wjfz  
       2019-01-21 18:37:11 +08:00
    @kisshere

    mime-type 这个当年是有些没有判断后缀,通过 mine 去判断文件类型的,这样给 php 文件前面加上类似于 gif89a 这样的东西就可以执行了。

    关键词,gif89a
    zjsxwc
        14
    zjsxwc  
       2019-01-22 08:52:44 +08:00
    需要配合 php 多入口方式,单文件入口很难
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2852 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:10 · PVG 14:10 · LAX 23:10 · JFK 02:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.