网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

再谈文件上传漏洞的防范 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 防范文件上传漏洞的核心思想是:确保上传的文件不会被服务器解析成可执行的脚本, 进而引发偏离功能设计的意外后果。限制文件上传的类型 (1)黑名单常常会出现遗漏或者大小写绕...

 防范文件上传漏洞的核心思想是:确保上传的文件不会被服务器解析成可执行的脚本, 进而引发偏离功能设计的意外后果。
限制文件上传的类型
    (1)黑名单常常会出现遗漏或者大小写绕过等问题, 所以通常采用白名单限制安全的文件类型, 如
       图片: .jpg, .png, .gif, .bmp
       文档: .doc, .pdf, .txt
       压缩包: .rar, .zip
    (2)类型限制不能只做在前端, js的限制可以很轻易绕过, 而后端的限制可以考虑以下几个方面:
       扩展名检测, 需要注意%00截断或者文件名包含空格等特殊字符的绕过方式
       必要的情况下,重命名用户上传的文件,杜绝上传时的文件名攻击
       MIME类型检测, 恶意的代码通常会利用合法的扩展名进行伪装
       对于图片上传, 可以考虑对其进行二次渲染/压缩, 将脚本嵌入到一张完全合法的图片中不是难事, 但二次渲染可彻底破坏恶意代码
限制上传文件的大小
    (1)限制上传文件的大小,防止由于内存、磁盘耗尽造成的拒绝服务。
    (2)可以配置web server允许的最大Post大小
    (3)可以在代码层面获取上传文件的大小, 根据文件类型的不同进行进一步的过滤
确保上传的文件被访问时能按照功能设计正确返回
    (1)将文件上传目录设置为静态资源目录, 防止被解析为脚本执行
    (2)使用代理页面隐藏文件真实路径, 如/attachment/getfile.php?fileid=123
    (3)使用上述方式时, 确保Content-Type与实际文件类型一致
    (4)如果文件不允许在页面展示, 仅允许下载, 请设置Content-disposition: attachment


其他
    (1)确保上传的文件放在安全的路径下, 必要时可将上传的文件存放于web server之外的远程服务器
    (2)确保web server版本为最新, 防止由于web server漏洞造成的文件意外解析
    (3)部分文件上传攻击会配合本地文件包含(LFI)漏洞进行, 所以需要确保web服务不存在LFI漏洞 

 

 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论