簡體   English   中英

Rails安全性-在模型級別執行所有權

[英]Rails Security - Enforcing ownership at the model level

我最近在我的網站上設置了“好友”功能。 它的工作方式是,如果一個用戶想要與另一個用戶“交朋友”,發送請求將創建一個user_connection記錄,其中原始用戶設置為user_id,而請求的用戶設置為contact_id。 如果另一個用戶接受了請求,則將創建另一個user_connection記錄,其中user_id和contact_id顛倒了。 如果兩個user_connections都存在,則將這兩個用戶視為朋友。 當前,這使每個用戶都可以訪問兩個用戶之間共享的任何建築物。

我想知道是否可以通過某種方式強制執行user_connection模型,以確保將創建記錄的人設置為user_id。 否則,似乎有人可以欺騙user_connection創建請求以使自己成為他們想要的任何人的聯系人,然后可以使用相同的方法欺騙建立共享。 有內置的方法可以防止這種情況嗎?

我的第一個想法是要有一個始終將user_id設置為current_user的ID的初始化程序,但似乎current_user不在模型上下文的范圍內。

禁止使用強參數將user_id作為參數提供。

因此,您可以創建如下關系:

@friendship = current_user.friendships.new(contact_id: other_user.id)

還要確保為current_user提供正確的條件。

就是這樣... user_id是暗含的,但從未提供。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM