2013-06-19 145 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"] 

我想,只要你需要,你使用像設計一個以上的用戶建議,作爲密碼管理和存儲成爲一個問題很快