gpt4 book ai didi

ruby-on-rails - rails : Sending PUT Request using curl/Postman to update an attribute

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:41 25 4
gpt4 key购买 nike

我正在阅读 Michael Hartl 的 Rails 教程书,在强参数部分它说

a malicious user could send a PATCH request as follows:

patch /users/17?admin=1

This request would make user 17 an admin, which would be a potentially serious security breach.

然后我决定自己做一个“恶意用户”,以便更好地理解它。

所以我将 :admin 添加到用户 Controller 中的允许属性列表中,并在 Linux 中使用 curl 发送 PUT/PATCH 请求,并在控制台中查看 admin 属性是否真的通过发送恶意请求得到了更新。

curl -X PUT http://localhost:3000/users/17?admin=1

首先它提示“无法验证CSRF token 真实性”,然后我注释掉了

# protect_from_forgery with: :exception

在应用程序 Controller 中,还消除了一些 before_actions 只是试图让它工作,但我被困在它提示的地方

ActionController::ParameterMissing (param is missing or the value is empty: user):
app/controllers/users_controller.rb:49:in `user_params'
app/controllers/users_controller.rb:37:in `update'

然后我意识到我可能必须将用户参数作为参数哈希的哈希传递才能使其正常工作。我如何在 curl 或 Postman(Chrome REST 客户端)中实现这一点?

最佳答案

要模拟 URL 查询中的嵌套属性,您可以这样写:http://localhost:3000/users/17?user[admin]=1但是,如果是 PUT 请求,则在请求正文中进行更准确。

在 postman 中,你可以简单地切换到 TEXT 模式并编写你的 JSON

{"user": {
"admin": 1
}
}

但是如果你这样做,不要忘记为 Rails 服务器添加所需的 header 以了解你正在 PUTing JSON:

Accept:application/json
Content-Type:application/json

祝你好运!

关于ruby-on-rails - rails : Sending PUT Request using curl/Postman to update an attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com