问题标签 [attr-encrypted]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Using ruby attr-encrypted gem without changing table column names
I have an existing project that I am now trying to update to use the attr-encrypted gem to encrypt some of my existing table columns.
Everything works as expected IF I update the names of the table attributes that I want encrypted to start with 'encrypted_'.
However, I am trying to avoid modifying my tables at all. Is that possible using attr-encrypted? And if so, how would I reference the encrypted/decrypted versions of the column data?
So for example, I have a Users table with a phone_number attribute. I want to encrypt the phone_number data without having to rename it to encrypted_phone_number in order for the attr_encrypted gem to work.
Thanks,
ruby-on-rails - 使用 attr_encrypted 生成相同密文的唯一 IV
使用最基本的设置:
提供相同名称时,数据库中的结果如下所示:
为什么密文相同?这不是宝石默认使用的iv点的一部分吗?
ruby-on-rails - Rails 使用 attr_encrypted 访问私有方法
我试图在attr_encrypted
将某些数据保存到数据库之前对其进行模糊处理。我需要稍后处理记录器的输出,但目前我只想从提交的表单中获取字段数据,加密并保存。
这是我的模型:
我注意到,当我注释掉private
一切似乎都按预期工作。但我显然不想让公众访问该信息(你知道:超级密钥),所以我希望它是私有的。但是,当我包含时,private
我得到一个错误。具体来说:NoMethodError (undefined method 'bytesize' for :encryption_key:Symbol)
。我深入研究的attr_encrypted
是抛出错误,因为它没有将密钥传递给它,因为私有方法没有被正确访问。
理论上,attr_encrypted
我可以只设置key: ENV['super_secret_key']
而不是调用方法,但这里的目标是实际创建一个具有相应数据库表的新类,我可以通过它保存、存储和旋转我的密钥,而这些密钥又被混淆了通过环境变量获得额外的安全层。
所以我真正的问题是:我的私有方法发生了什么,为什么private
令人沮丧的事情,即使在模型的范围内?我认为我做的事情基本上是不正确的,但我也遵循了其他人的例子,所以任何关于我的错误的指导将不胜感激!
ruby-on-rails - 在 Rails 应用程序中优雅地重新加密令牌
我继承了一个与 Facebook 集成的 Rails 应用程序,并对从 Facebook 发送的令牌进行加密,并将其保存为用户的身份验证令牌。
由于各种原因,我最终更新了我的 Ruby,并且发生了一些 Gemfile 更改,这导致应用程序出现问题。最重要的是对 的更改attr_encrypted
,它通过encrypted
gem 处理保存到数据库中的 Facebook 令牌的加密。
attr_encrypted
问题是,该应用程序已经上线并且已经有很多用户,它的基本秘密加密密钥对于新更新的安全标准来说太短了。具体来说,当我现在尝试加密令牌时(目前在测试中;我还没有实时推送这些更改),会抛出一个错误,指出密钥需要为 32 个字节。
问题:
有没有人建议更新到更安全的令牌?如果我更改令牌,我假设这将破坏令牌的解密,因此我可能会永久失去读取/使用数据库中所有用户身份令牌的能力。这显然很成问题,所以我想在这里仔细检查一下我的想法。
我目前的想法是迁移:运行一个遍历每个身份的迁移,使用我的旧密钥解密存储的令牌,然后使用更长的新密钥保存新加密的令牌。
然后我可以毫无问题地摆脱旧钥匙。正确的?任何人都可以想到的关于attr_encrypted
gem 的特性或我可能没有考虑的一般加密问题的任何问题?
ruby-on-rails - rake db:seed 仅在其自己的 rake 中有效
这是使用attr_encrypted时的两个命令:
当我说种子“失败”时,我的意思是加密字段都是空白的。成功后,将填充加密字段。
种子文件中的一个示例:
为什么会发生这种情况,我怎样才能确保种子每次都有效?
ruby-on-rails - 如何在 attr_encrypted 中使用相同的 iv 和 salt 加密 2 个属性?
我有 2 个属性说user_name
和password
。我想使用我在数据库中存储和attr_encrypted
的模式进行加密。我不想为每个属性使用单独的和。是否有一种模式只有一个并加密两者?per_attribute_iv_and_salt
iv
salt
iv
salt
Iv
Salt
ruby-on-rails - attr_encrypted 的 Rails 控制台问题
我正在使用 rails attr_encrypted gem 在存储到数据库之前对数据进行加密。它在我的应用程序上运行良好,因为它使用提供的密钥加密并通过我的应用程序使用相同的密钥对其进行解密。但是当我使用我的 rails 控制台创建一个实例时,它不会使用应用程序中提供的密钥进行加密(可能每次都使用一些随机密钥),因此当我在我的应用程序中看到该实例时我无法解密它.
下图显示,如果我在控制台中创建了两次同名用户,每次加密的数据都不一样。我正在关注此页面上的教程
当我尝试访问我的应用程序上的页面时,控制台创建的用户显示此错误
这是我的 model.rb 文件的代码,我使用临时密钥进行演示:
这是我的控制器代码:
ruby-on-rails - attr_encrypted - 更新所有加密字段,尽管我只更改了一个
我将attr_encrypted gem 用于一些用户数据,如下所示:
我正在使用设计来创建/更新User
的注册信息。
我看到的奇怪行为是,每次我更新User
's 的一个属性时 - 例如name
,所有其他加密属性也会更新(date_of_birth
,phone_number_home
等)。
即使是简单的 rails 控制台命令集,也会在所有加密字段上触发 UPDATE SQL 命令:
这很奇怪,因为如果我只更新name
字段,我只希望更新数据库中的enc_name
andenc_name_iv
列 - 它实际上与其他加密字段无关。
更奇怪的是,它似乎attr_encrypted
每次都enc_*
为我上面描述的所有属性生成一个新集合。这种行为对我来说似乎不合适。
我的最终目标是使用paper_trail跟踪对配置文件的更改,但正如您可以想象的那样,user.versions.last.changeset
是跟踪对其他字段的更改而不是name
. 我认为这attr_encrypted
是造成根本问题的原因。
有心人分享一下吗?
ruby-on-rails - Rails 测试在 attr_encrypted 上抛出弃用警告
Rails 测试对已更新到最新版本的 gem (attr_encrypted) 发出弃用警告。上面写着:
DEPRECATION WARNING: <custom_attribute_name> is not an attribute known
to Active Record. This behavior is deprecated and will be removed in
the next version of Rails. If you'd like <custom_attribute_name> to be
managed by Active Record, add attribute :<custom_attribute_name> to
your class.
不知道它要求我做什么......它必须使用 attr_encrypted 声明。