如何在attr_encrypted中搜索加密字段

时间:2017-08-04 07:12:18

标签: ruby-on-rails ruby-on-rails-4 attr-encrypted

我已在我的应用中设置attr_encrypted,每个记录都有个人'iv'。

# Fields
User.e_name
User.e_name_iv

我正在尝试在User表中搜索已知名称。我试过了:

User.find_by_name("Joe Bloggs") # undefined method "find_by_name" for Class
User.where("name = ?", "Joe Bloggs").first # column "name" does not exist
User.where(:e_name => User.encrypt_name("Joe Bloggs"))  # must specify an iv

如何按姓名查找记录?

1 个答案:

答案 0 :(得分:0)

While it is possible to do some searching, it's not very practical. you'll have to potentially iterate through every record trying each respective IV until you have an exact match, depending on the number of records you have this will not be very practical.

Have you read the readme? https://github.com/attr-encrypted/attr_encrypted#things-to-consider-before-using-attr_encrypted

Searching, joining, etc

While choosing to encrypt at the attribute level is the most secure solution, it is not without drawbacks. Namely, you cannot search the encrypted data, and because you can't search it, you can't index it either. You also can't use joins on the encrypted data. Data that is securely encrypted is effectively noise. So any operations that rely on the data not being noise will not work. If you need to do any of the aforementioned operations, please consider using database and file system encryption along with transport encryption as it moves through your stack.