這可能是個愚蠢的問題,但請耐心等待。Rails控制檯是否繞過質量分配保護?
我一直在玩正在使用的rails應用程序,並且我在控制檯(即rails c
)中,我決定嘗試通過控制檯將用戶添加到數據庫。
我User
模型具有role
屬性,它是從UsersController
強則params的列表中排除。但是,當我使用控制檯時,我可以通過執行update_attribute
來編輯新用戶角色的值。這關係到我。這是否意味着我沒有正確執行強參數,並且不知何故不能保護我的用戶模型免遭羣發任務?或者軌道控制檯故意繞過質量分配?這裏有沒有安全漏洞?
這裏是控制檯輸入/輸出:
2.3.1 :004 > user.update_attribute("role", "admin")
(0.1ms) begin transaction
SQL (0.7ms) UPDATE "users" SET "updated_at" = ?, "role" = ? WHERE "users"."id" = ? [["updated_at", "2017-06-21 10:25:34.134203"], ["role", "admin"], ["id", 4]]
(92.1ms) commit transaction
=> true
這裏是UsersController
相關部分:
def create
sleep(rand(5)) # random delay; mitigates Brute-Force attacks
@user = User.new(user_params)
if @user.save #&& verify_recaptcha(model: @user)
if @user.update_attribute('role', 'user')
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
else
render 'new' #Reset the signup page
end
end
#...
#Defines which fields are permitted/required when making a new user.
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
預先感謝您。
啊,OK。那麼我在控制檯上做的事情不是惡意用戶真正能夠複製的東西嗎?除非可能存在SQL注入漏洞或這種性質。 – Makcheese
是的..現在你知道了 –
謝謝!這讓我的心靈放鬆:) – Makcheese