1

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

我使用carrierwaves 来处理照片上传,并使用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}

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

  4. 一切都很好,但是....

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

所以目前实施并不安全,对吧?

谁能给我一些建议或处理这个问题的正确方法是什么?

4

0 回答 0