2013-06-19 105 views
0

我目前正在编写一个需要管理员登录的小型web应用程序。由于只有一个管理员,我不愿意为它编写一个功能完整的管理系统。但是,由于基本的HTTP登录使用未加密的用户名和密码,因此在安全级别显然不可接受。那么是否有安全使用HTTP登录或其他易于制作但安全的登录方法?Rails - 安全的HTTP登录?

回答

0

是的。有几种不同的选择。如果您正在寻找全功能的解决方案,请查看设计。

这是非常简单,将满足您的要求:

https://github.com/plataformatec/devise

每文档:

数据库可验证:加密并存储在数据库中的密码,以验证真伪用户在登录时进行身份验证。身份验证可以通过POST请求或HTTP基本身份验证完成。

0

Cancan是实现安全授权和ACL的gem。

如果您计划防止通过Internet传输明文密码,则需要使用HTTPS。

1

您可以使用devise来验证您的管理员。通过设计,您可以保护控制器级别的广告(控制器中的before_filter :authenticate_users与您的管理页面相关)。设计将加密和盐你的密码,并将其存储在你的分贝。

为了提高安全性,您可以添加ssl,因此用户名和密码都不会以明文形式传输。

0

我认为你真正需要的是管理面板解决方案。
有两个好的
Rails的管理https://github.com/sferik/rails_admin
ActiveAdmin http://activeadmin.info

我在不同的项目中使用这两者,Rails的管理员更快的部署 - 开箱的(只需要运行的发电机)。 ActiveAdmin需要预先配置一些配置。

2

在线路上实现密码真实安全的最简单方法是使用HTTPS协议。

您可以通过此协议使用HTTP基本身份验证,并执行一些简单的操作,例如在应用程序中对用户/密码进行硬编码。我已经通过将用户/密码放入服务器上的ENV变量来做了很多次,所以它们不会被添加到源代码库中。然后,我使用Rails内置的http_basic * helpers来访问特定的控制器动作:

# Controller 
class FooController < ApplicationController 

    http_basic_authenticate_with :name => Rails.application.config.foo_user, 
    :password => Rails.application.config.foo_password 

    def index 
    ... 
    end 
end 

# Initializer - config/initializers/foo_auth.rb 
Fooapp::Application.config.foo_user = ENV["FOO_USER"] 
Fooapp::Application.config.foo_password = ENV["FOO_PASSWORD"] 

我想,只要你需要,你使用像设计一个以上的用户建议,作为密码管理和存储成为一个问题很快