Я настоятельно рекомендую для этого Security on Rails . Это сложная тема, поэтому вам нужно потратить некоторое время на чтение, чтобы понять это правильно. Они охватывают именно эту тему, в том числе способы подсчета зашифрованных данных, модульное тестирование, чтобы убедиться, что они зашифрованы, и многое другое.
В их примере кода показано, как добавить методы класса в ActiveRecord :: Base, чтобы можно было зашифровать любой столбец базы данных в одну строку кода. Определенно идиоматический подход Rails.
Это потрясающее чтение - юнит-тесты взорвали меня, так серьезно ... иди за ним.
Кстати, когда ты сказал
Мы не хотим иметь возможность
использовать сохраненные учетные данные самостоятельно.
вы понимаете, что поскольку ваш код получает незашифрованные данные из браузера пользователя, у вас есть доступ к данным в памяти до того, как они будут зашифрованы на диске, или когда они будут незашифрованными, когда пользователь захочет использовать эти данные позже. И плохие люди могут получить доступ к этим данным, если они получат root права на вашу коробку, проникнут в Ruby eval()
и т. Д.
Шифрование данных очень помогает, хотя. Атаки SQL-инъекции не могут получить расшифрованные данные, например.