如何阻止在Rails中上传文件?

时间:2019-06-11 09:27:10

标签: ruby-on-rails security paperclip rackattack

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

服务器上的反恶意软件在/ tmp中发现了一堆这样的PHP文件:

/tmp/RackMultipart20190610-9668-u9nebk.php

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

两个问题:

  1. 如何跟踪它们的来源?在我的production.log中,我看到了一大堆404帖子,这些帖子伪造了joomla和wordpress .php路径,但对这些上传没有任何影响。

  2. 将来如何预防?

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

我们在两个地方都有登录成员可以上传图像或PDF的地方。如何阻止所有其他尝试上传文件?

1 个答案:

答案 0 :(得分:2)

绕过文件上传是上传webshel​​l和其他内容的常用技术。

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

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/

确保同时实现这两种技术,并且应该没事。