我有一个使用devise和devise_token_auth的Rails 4.X应用程序。我想在调用此应用程序时加密电子邮件和密码。
这是服务器端代码:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
gem 'devise'
gem 'devise_token_auth'
gem 'omniauth'
这是我的卷曲电话(明文用户名和密码)
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/auth/sign_in -d "{\"email\":\"user@gmail.com\",\"password\":\"aaaaaaa"}"
我知道我可以使用https来保护初始通话。但是有没有其他方法来加密用户名和密码(不使用https)? 谢谢!
答案 0 :(得分:1)
您可以按照challenge-response authentication中的规定实施RFC 7616。这将在明文通道上充分保护密码。但是,这种方法本质上倾向于man-in-the-middle attacks。另一个问题是这种方法依赖于共享密钥,这会损害服务器端密码的安全存储。
我的建议是使用RFC 7617中通过安全通道(即https)指定的基本身份验证方案。这相对容易实施和建立实践。