首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有更好的方法来测试:管理安全性

是否有更好的方法来测试:管理安全性
EN

Stack Overflow用户
提问于 2013-01-31 04:07:38
回答 1查看 375关注 0票数 1

我正在读Hartl的Rails教程。我准备第一次练习9.6,他让我测试用户admin属性是否是不可访问的。较早时,书中的理由是:

清单9.42之后,Hartl的Rails教程说

如果我们忽略了用户模型中的attr_accessible列表(或者愚蠢地将:admin添加到列表中),恶意用户可能发送PUT请求如下: put /users/17?admin=1

本教程中相应的练习(练习9.6.1)说

添加测试,以验证用户管理属性不可访问

我已经用user_spec.rb中的这段代码完成了测试

代码语言:javascript
复制
expect do
  @user.update_attributes(:admin => true)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)

但我用堆栈溢出来做测试。--这是我最初的想法,(在user_pages_spec.rb中):

代码语言:javascript
复制
expect do
    put user_path(user) + "?admin=1"
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error) # or some other error

,但我没能让它开始工作。

所以我的问题是:

  1. 是可能的吗?不是更好地直接测试一个潜在的黑客在命令行中可能做什么吗?这不就是Capybara测试用户行为的想法吗?
  2. (如果可能的话),测试质量分配和测试PUT操作之间有什么区别吗?
  3. 如果不可能,为什么?只是没有必要,还是我在这里漏掉了什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-31 05:06:53

我想我会跟你争论你的考试实际上更好。有些人会争辩说,给出的答案是测试Rails功能,这实际上不是您的工作。然而,我确实认为在几个不同的方向测试事物是好的。

在我上学的时候,我的印象是,除了做GET之外,不可能通过URI发送数据。快速搜索堆栈溢出没有得到任何确认。然而,维基百科的文章似乎暗示了这一点:

%28HTTP%2

我认为正确的代码行是

代码语言:javascript
复制
put user_path(user), {user: {admin: 1}, id: user.id}

我希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14618302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档