0

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

4

5 回答 5

2

确保在线密码真正安全的最简单方法是使用 HTTPS 协议。

您可以通过此协议使用 HTTP Basic auth 并执行一些简单的操作,例如在应用程序中硬编码用户/密码。我已经多次通过将用户/密码放入服务器上的 ENV vars 来完成此操作,因此它们不会添加到源代码存储库中。然后我使用 Rails 内置的 http_basic* 帮助程序来允许访问特定的控制器操作:

例如

# 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"]

我建议,一旦您需要多个用户,就使用 Devise 之类的工具,因为密码管理和存储很快就会成为问题

于 2013-06-21T22:43:28.577 回答
1

您可以使用设计来验证您的管理员。使用设计,您可以保护广告控制器级别(before_filter :authenticate_users在与您的管理页面相关的控制器中)。Devise 将对您的密码进行加密和加盐,并将其存储在您的数据库中。

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

于 2013-06-19T16:18:06.030 回答
0

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

我在不同的项目中使用它们,Rails 管理员部署起来更快 - 开箱即用(只需要运行生成器)。ActiveAdmin 需要预先进行一些配置。

于 2013-06-19T16:39:30.697 回答
0

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

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

https://github.com/plataformatec/devise

根据文档:

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

于 2013-06-19T16:15:01.207 回答
0

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

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

于 2013-06-19T16:15:37.433 回答