ruby-on-rails - Rails PDF 上传恶意内容漏洞

标签 ruby-on-rails security pdf file-upload carrierwave

我正在使用 Carrierwave 和 Rails 4 实现 pdf 上传。客户向我询问恶意内容,例如如果有人尝试上传伪装为 pdf 的恶意文件。我将前端的文件类型限制为“application/pdf”。假设上传的文件具有 .pdf 扩展名,还有什么我需要担心的吗?

最佳答案

文件上传通常是一个安全问题,因为有很多方法会导致错误。仅就将恶意文件伪装为 PDF 的问题而言,检查内容类型(application/pdf)很好,但还不够,因为它由客户端控制并且可以修改。

  • 绝对建议过滤 .pdf 扩展名,但请确保您不接受 virus.pdf.exe 等文件。
  • 还存在其他文件名攻击技术,例如涉及空字符或控制字符。
  • 考虑使用文件类型检测器来确定该文件是否确实是 PDF 文档。

但这只是为了限制文件类型。接受文件上传时还有许多其他问题需要注意。

  • PDF 文件可能包含恶意代码,是常见的攻击媒介。
  • 确保上传的文件写入服务器上的适当目录。如果它们不打算公开访问,请选择 Web 根目录之外的目录。
  • 限制最大上传文件大小。

无论如何,这都不是完整的列表。查看Unrestricted File Upload OWASP 的漏洞了解更多信息。

关于ruby-on-rails - Rails PDF 上传恶意内容漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937560/

相关文章:

linux - 如何在 linux 中一步将子文件夹中的 jpg 文件转换为每个 pdf 文件?

ruby-on-rails - 如何将 ActiveRecord 模型属性从 json 迁移到 jsonb?

ruby-on-rails - Heroku 上的 Rails : session variables nil

具有基本身份验证的 Spring Security 重定向到/error 以获取无效凭据

python - 如何制作基于 web 的 python 交互式 shell

php - 登录系统的 cookie 中应该存储什么?

c# - 以编程方式检索 PDF 的安全属性?

ruby-on-rails - 如何让 Brakeman 忽略某些路径

ruby-on-rails - 如何使用 rails 和 postgres 异步更新不同的 json (jsonb) 属性?

pdf - Phantomjs zoomFactor - 将光栅化缩放到特定大小