2014-01-19 59 views
0

這個問題已經被我知道了很多次,但這裏對我來說還不清楚。在會話中存儲密碼的JSP

我使用JSP與Hibernate,我想通過數據庫的功能來實現用戶的認證 - create user ... - 並使用相同的方法登錄。 所以每次我的腳本應該知道當前用戶的登錄名和密碼,我知道有類似的會議做的唯一方法:

SessionFactory sf = new Configuration() 
     .configure("/hibernate.cfg.xml") 
     .setProperty("hibernate.connection.username", session.getAttribute("username")) 
     .setProperty("hibernate.connection.password", session.getAttribute("password")) 
     .buildSessionFactory(); 

是它似乎脆弱?如果它在服務器端執行,爲什麼我應該避免在會話中傳遞存儲?

+0

我對HibernateSession的HttpSession感到困惑。你爲什麼要這樣? – Keerthivasan

+0

我有多個index.jsp,所以hibernateSession會在完成一些腳本執行 – WildDev

回答

1

是的。它肯定看起來很脆弱。你不加密任何東西,所以任何人嗅探你的客戶端的HTTP請求可能會攔截她的用戶名/密碼。

http身份驗證機制的默認方法是創建一段時間後失效的令牌。該令牌將在安全cookie內加密。這樣,用戶的憑據只能通過網絡傳輸一次,最好通過安全的https連接傳輸。那麼只有令牌會傳播。

反正你沒有實施這樣的機制自己,以及更精確你不應該實現這樣的自己機制,除非你是非常肯定的,你在做什麼。

我強烈建議您閱讀securing web applications的基礎知識。實現這種功能的最常見方式是使用forms based authentication。根據你的應用服務器,認證機制已經是implemented。例如,使用glassfish檢查關於jdbc領域上的表單身份驗證的示例this post,或使用jboss引用相同主題的this post

希望我幫了忙!

+0

後死掉,謝謝 – WildDev