gpt4 book ai didi

ruby-on-rails - attr_accessible, attr_accessor, 我想知道他们是做什么的

转载 作者:行者123 更新时间:2023-12-04 05:31:45 24 4
gpt4 key购买 nike

我正在 Rails 和面向对象编程中迈出第一步。
我想了解一些非常基本的东西:为什么我们需要 attr_accessible模型内?

我读过黑客可以使用批量分配来更改数据库条目,从而危及安全,这就是为什么敏感字段需要保护(在这种情况下使用 atribute_protected)。

attr_accessibleatribute_protected相反?如果是这样,为什么我们需要说明哪些字段可访问,哪些不可访问?不是默认可以访问这些字段吗?什么是attr_accessor用于?

我注意到如果我不让某些字段可访问,我的应用程序就不会运行。我可以将 attr_accessible 用于敏感字段,例如 :password_digest 和 :admin 吗?

如果有人能向我解释一下,那就太棒了。

万事如意,
rails 上的提米

最佳答案

您在这里混杂了几个概念,因此我将尝试理清它们。
attr_accessor用于设置可读可写属性。这相当于说 attr_readerattr_writer .由于您的问题不是直接关于 attr_accessor ,我不会再解决这个问题,只是说在 Accessors 上查看此链接.

根据 Rails 文档: attr_accessible与 attr_protected 宏相反

您是正确的,这些方法用于防止批量分配漏洞。

  • attr_accessible说明哪些属性 可以 通过批量赋值来设置。
  • attr_protected说明哪些属性 不能 通过批量赋值来设置。

  • 那么每个用例是什么?在一种情况下,您可以设置一个全局配置选项,使其必须声明所有属性 attr_accessible :
    config.active_record.whitelist_attributes = true

    在这种情况下,您可以使用 attr_accessible经常。

    attr_protected ?如果你反其道而行,说 false在白名单属性上,您将如何声明哪些属性不应大量分配?如果你说 attr_protected你说得对! :D

    通常你想设置像 :admin 这样的字段如 attr_protected因为您不希望攻击者进入并将他们的权限升级为管理员角色。

    批量分配不是一件容易正确的事情。大而聪明的开发团队犯了这个错误。因此,请仔细阅读并确保您了解正在发生的事情!

    关于ruby-on-rails - attr_accessible, attr_accessor, 我想知道他们是做什么的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487865/

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