试题
考点

产品项目分析-常用的产品分析-功能分析

面5笔5

如何设计出一个安全的文件上传功能?

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

可以设计如下文件上传的安全规则:
  1. 文件上传的目录设置为不可执行
  2. 判断文件类型
  3. 单独设置文件服务器的域名
  4. 改写文件名,文件路径不可预测

第一点规则是显而易见的,是为了减小执行动态语言脚本的风险。如果被成功上传了一个webshell,但是不能执行,还是能够起到深度防御的作用。

第二点,在判断文件类型的时候,我们一般要求使用白名单,而不是黑名单,因为黑名单可能会列不全,还可能会造成一些bypass的风险。

第三点,单独设置文件服务器域名,也是一种针对客户端的保护。这样可能会避免许多跨域的问题。如果发生了XSS,攻击者可能还需要突破跨域的限制才能进一步扩大战果。再比如如果被上传了crossdomain.xml,可能就会导致flash的跨域问题,这些都是实实在在的风险。

第四点,改写文件名,随机文件路径。这是把风险藏起来,现在基本上尽职一点的程序员都会这么设计,这也是最大程度减小风险的非常切实有效的手段。

评论
暂无评论

加载更多