Ruby on rails 防止web应用程序用户在上载到cloudinary时修改图像id
我正在构建一个rails web应用程序,用户可以在其中将图像从浏览器上传到cloudinary。我想得有点超前,我想防止用户使用传递的参数,以免在五月的页面(空图像)中出现不需要的输出 在我看来,我有cloudinary上传程序的代码:Ruby on rails 防止web应用程序用户在上载到cloudinary时修改图像id,ruby-on-rails,image-upload,cloudinary,Ruby On Rails,Image Upload,Cloudinary,我正在构建一个rails web应用程序,用户可以在其中将图像从浏览器上传到cloudinary。我想得有点超前,我想防止用户使用传递的参数,以免在五月的页面(空图像)中出现不需要的输出 在我看来,我有cloudinary上传程序的代码: <%= form_tag(some_path, :method => :post) do %> <%= cl_image_upload_tag(:image_id) %> ... <% end %> 该图像ID
<%= form_tag(some_path, :method => :post) do %>
<%= cl_image_upload_tag(:image_id) %>
...
<% end %>
该图像ID将保存在我的数据库中,以便将来检索
现在,如果用户使用诸如“curl”之类的工具,或者任何其他允许他在提交给控制器之前修改返回的:image_id的方法,该怎么办?我将有一个错误的值在我的数据库,这将很难找到和一个空的图像,当我试图显示在我的网页。避免这种情况的最佳方法是什么
关于,使用
cl\u image\u upload\u标签时,参数[:image\u id]
的值将包含签名。签名通过preload文件#valid?
进行验证。您可以确定Cloudinary返回了此public\u id
和version
。如果需要,您还可以验证该版本(unix时间戳)是否是合理的最新版本。当您假设的淘气用户使用curl时,他们是向您的应用程序提交请求还是直接向cloudinary提交请求?他们是否可以直接提交到cloudinary?Hello@MaxWilliams,最终我的用户在上传到cloudinary后向我的应用程序提交请求。我不确定我是否能说服他提交我的应用程序,因为他需要接受图片,以防他错误地上传了其他内容。看一看。谢谢@PatsyIssa的链接。在会话和请求中存储一个随机令牌并对其进行比较的想法确实很有趣。我会试试,让你知道。竖起大拇指!我必须承认,我还没有详细阅读文档,并且使用了cloudinary示例中的代码。。。
if params[:image_id].present?
preloaded = Cloudinary::PreloadedFile.new(params[:image_id])
raise "Invalid upload signature" if !preloaded.valid?
@model.image_id = preloaded.identifier
end