簡體   English   中英

Ruby on Rails-何時使用params.permit! 以及如何更換

[英]Ruby on Rails - When to use params.permit! and how to replace it

我正在使用舊版Rails應用程序,並且控制器具有許多params.permit!實例params.permit! 在對其進行params.permit!掃描時, params.permit! 打開應用程序以進行批量分配漏洞。

我的問題是-解決這個params.permit的最有效方法是什么? 漏洞並取代它?

params.permit! 導致大規模分配漏洞的所有屬性列入白名單。 解決此問題的最佳方法是僅將必要的屬性列入白名單,如下所示

params.permit(:attr1,:attr2..)

更好的是,使用require permit

允許您選擇哪些屬性應列入白名單以進行批量更新,從而防止意外暴露不應公開的屬性。 為此提供了兩種方法:要求和允許。 前者用於根據需要標記參數。 后者用於將參數設置為允許,並限制應允許哪些屬性進行批量更新。

params.require(:key).permit(:attr1, :attr2..)

我假設有人添加了params.permit! Rails升級后,避免查看“強參數”並正確設置。

解決此問題的正確方法是,遍歷每個控制器並查看您需要為每個操作指定哪些參數,然后使用params.permit(不帶感嘆號)為允許的參數設置白名單:

https://apidock.com/rails/ActionController/Parameters/permit

我還發現,在各個參數調用上使用to_unsafe_hash方法可以正常工作,並且可以避開Brakeman警告。 此處有關該方法的一些信息: https : //apidock.com/rails/v4.2.7/ActionController/Parameters/to_unsafe_hash

暫無
暫無

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

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