【问题标题】:How can I block file uploads in Rails?如何在 Rails 中阻止文件上传?
【发布时间】:2019-06-11 09:27:10
【问题描述】:

我有一个 Rails 应用程序 (v4.2)。我有两个操作允许使用回形针上传图像。我对 mime 类型进行了回形针验证。

服务器上的反恶意软件在 /tmp 中发现了一堆 PHP 文件,如下所示:

/tmp/RackMultipart20190610-9668-u9nebk.php

我假设它们是在文件上传过程中创建的。

两个问题:

  1. 如何追踪它们的来源?在我的 production.log 中,我看到一堆 404 用于发布到虚假 joomla 和 wordpress .php 路径的帖子,但没有任何内容可能导致这些上传。

  2. 以后我该如何预防?

我正在使用机架攻击,并且可以阻止 .php 文件扩展名,但是如何阻止表单中的文件上传?

我们有两个地方可供登录会员上传图片或 PDF。如何阻止所有其他上传文件的尝试?

【问题讨论】:

    标签: ruby-on-rails security paperclip rackattack


    【解决方案1】:

    文件上传旁路是上传 webshel​​l 和其他东西的常用技术。

    有两种基本方法可以帮助您减少上传到服务器的文件数量:

    MIME 内容类型验证:如果您验证上传文件的内容类型(因为您只需要图像),您可以确保只上传图像类型文件:

    :content_type => ["image/gif", "image/jpg", "image/jpeg", "image/png", "image/bmp", "image/x-bmp"]
    

    但是这个还是可以绕过的,所以需要再添加一个验证:

    文件扩展名验证:您还应该添加文件扩展名验证,以确保您只允许上传图片类型的扩展名。

    我找到了一篇很酷的帖子,其中展示了文件扩展名验证的良好实现:https://stevenyue.com/blogs/validate-attachment-file-size-and-type-in-rails/

    确保你实现了这两种技术,你应该没问题。

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 2016-04-09
      • 2011-01-22
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多