我正在构建一个具有文件上传功能的Rails应用程序,只有经过身份验证的用户才能上传文件。文件上传表单位于仅限会员区域,但由于抓取上传URL并尝试从脚本发布数据非常容易,所以我担心未经身份验证的文件上载提交。确保上传将被拒绝,但只有在数据传输完成并且浪费了宝贵的带宽之后。如何在整个表单提交到我的服务器之前拒绝未经身份验证的文件上传?由于我无法使用脚本或CURL控制用户,因此需要某种服务器端解决方案。我很欣赏任何反馈。谢谢。如何在数据传输完成之前拒绝文件上传?
回答
这是在执行该操作之前,你可以做..时,执行的before_filter什么(upload_form_action被上传表单页面,upload_action在于临危文件
allowed_to_upload应的页面简单的伪代码被帮手/功能/等,返回真/假,如果是假的,它会呈现403未经授权,否则将只是吝啬。
before_filter :check_upload, :only => [:upload_form_action, :upload_action]
protected
def check_upload
render :nothing, :status => 403 and return unless allowed_to_upload
end
我目前有一个类似的before_filter设置来检查用户是否登录。如果用户没有登录,那么它只是重定向用户。我试过你的代码,但是认证总是在文件完全上传后进行。想象一下,一个聪明的用户从html源代码(包括真实性令牌和所有)抓取表单并使用它来尝试上传文件(不包含包含认证信息的cookie)。认证before_filter会拒绝文件的进一步处理,因为用户没有登录但没有实际上传 – SimKo 2011-02-28 03:23:35
问题在于Rails在完成(即上传完成时)之前不处理该请求。不过,我怀疑你可以发送1GB的上传请求到任何页面,你不能做太多的事情。我需要看看这个 – nvez 2011-02-28 18:08:37
是的,我有一个暗示,这可能是这样的。真正需要的是在文件上传完成之前检查cookie,然后终止上传。我想知道是否有可能在全部完成之前处理这篇文章。 Cookies是在表单数据之前发送的,因此可能有机会检查帖子,看看在表单数据流式传输到服务器时是否存在带有认证数据的cookie。也许有一些Rack定制?我不知道在交付它之前,Web服务器是否缓冲了整个帖子。 – SimKo 2011-02-28 21:11:31
- 1. 如何在Django完成之前拒绝上传?
- 2. 在上传完成之前访问文件数据在php中完成
- 3. 在上传完成前访问http上传数据
- 4. FTP文件传输访问被拒绝
- 5. 如何在codeigniter上传之前获取文件数据
- 6. Django上传文件 - 权限被拒绝
- 7. 上传文件被Spring Security拒绝
- 8. aws lambda拒绝文件上传
- 9. 在添加文本之前完成“传输”
- 10. 如何延迟完成位传输直到传输完成?
- 11. PHP - 获取上传文件传输完成的时间戳
- 12. Blueimp文件上传插件,进度条完成文件上传
- 13. Synfony 3 + Vich上传包 - 在上传文件之前无法设置元数据
- 14. 上传问题(拒绝)
- 15. 上传作业在上传成功之前的相同文件上失败
- 16. 如何在上传文件之前显示文件的名称。
- 17. 如何在上传文件之前检索文件的大小?
- 18. Python文件之间的数据传输
- 19. 如何在UIViewControllers之间传输数据?
- 20. SCRIPT5:访问被拒绝在IE9上的文件上传
- 21. 传输完成数据库的
- 22. 使ajax上传abort-able只能在上传进度完成之前
- 23. 让PHP等到一个文件完成传输后再传输
- 24. 在页面完成PHP处理之前捕获上传文件的时刻?
- 25. HTML文件上传接受和拒绝文件扩展名
- 26. 如何在即时上传之前在服务器上传之前在sapui5中压缩文件?
- 27. 在POST上传之前重定向已完成
- 28. 权限Django在上传文件时被拒绝错误
- 29. django权限在文件上传中被拒绝
- 30. 检测SFTP文件上传完成
也许有一个的before_filter确保需要登录上传文件? – Shreyas 2011-02-27 17:52:49