Rails:如何安全地关联现有的关联?

时间:2012-04-23 17:08:54

标签: ruby-on-rails-3 carrierwave

我正在设计一个拥有众多用户的网站,每个用户都有很多帖子,每个帖子都有很多照片。因为我希望用户可以在创建新帖子时预览上传照片,所以我找到了答案here,建议使用子表单上传照片。

我使用carrierveaves处理照片上传,并使用jquery-file-upload进行用户界面处理。模型是:

class User < ActiveRecord::Base
    has_many :posts, dependent: :destroy
end

class Post < ActiveRecord::Base
    attr_accessible :title, :description, :photo_ids
    belongs_to :user
    has_many :photos, :dependent => :destroy
end

class Photo < ActiveRecord::Base
    mount_uploader :image, ImageUploader
    attr_accessible :image
    belongs_to :post
end

在新的帖子视图中,我将jquery-file-upload UI放在普通帖子表格之上,然后:

  1. 当用户选择照片时,它将通过jquery-file-upload api上传到PhotosController。此步骤的post_id在此步骤为零。

  2. 照片上传完成后,我使用javascript添加隐藏的输入表单,如下所示:

    input type =“hidden”id =“collection_image_ids”name =“collection [collection_image_ids] []”value =#{id of the photo}

  3. 用户可多次重复步骤1和2,然后提交帖子。

  4. 然而,一切运作良好......

  5. 我不认为允许对photo_ids进行批量分配是个好主意,因为有人可以使用此请求将其他用户的照片分配给他的帖子。 (在编辑视图中) 参考答案建议使用一些随机访问密钥来提高安全性, 但当有人访问其他用户的帖子时,他仍然可以获得这些照片的随机访问密钥,对吗?

    所以现在实施不安全吗?

    有人能给我一些建议或者解决这个问题的正确方法是什么?

0 个答案:

没有答案