對於乙個SSO的ticket生成的安全性問題的點評

2021-08-23 15:27:30 字數 1535 閱讀 7488

我今年近期的工作中作為系統架構師身份,對乙個現有系統的框架從架構設計的伸縮性和安全性等方面進行了評估,發現了以下安全性問題。

它的現系統的ticket的生成是用以下**生成的:

package com.***.sna.server.utils;

import org.apache.commons.codec.digest.digestutils;

import org.apache.commons.lang.booleanutils;

public class ticketbuilder

/*** 生成ticket

* * @param account

* @return

*/public static final string generateticket(string account)

/*** 匹配ticket

* * @return

*/public static final boolean match(string account, string ticket)

public static void main(string args)

}

大家有沒發現什麼問題呢? :)

wooce 2009-03-09 18:31:12

我覺得sna的cookie裡沒有跟具體會話有關的資訊, 就是說,只要登入一次,這次登入的cookie完全可以用來偽造為下次登入使用?

*** 2009-03-09 18:33:39

嗯,用到cookie是有一點安全隱患

wooce 2009-03-09 18:35:26

只要cookie裡是能儲存每次登入都不同的session id, 那麼,既能解決我下午所說的問題, 又能保證比較好的安全性, 對不對?

*** 2009-03-09 18:37:23

我查一下**,現在儲存的sna_ticket值應該是每次登入都不同才對

wooce 2009-03-09 18:38:25

不是啊。

public static final string generateticket(string account)

wooce 2009-03-09 18:38:56

getenryptkey()又返回每次都一樣的:

private static final string encrypt_key = "!@$%6*he(8hj79dsfgkd"

wooce 2009-03-09 18:39:17

所以, sna_ticket值每次登入都會是一樣的,:)

*** 2009-03-09 18:39:17

嗯,知道了~~~~~~呵呵,這**改過

*** 2009-03-09 18:40:06

是的,只要每次登入的值不同就可以

wooce 2009-03-09 18:43:43

+系統當前時間+user id+隨機串,然後再加密, 就保證每次和每個使用者都不同了, 就可以完全把sna_ticket當session id用了

實現乙個SSO系統

sso全稱single sign on,單點登入.用於實現多系統的登入認證.說白了就是只要乙個賬號就可以訪問阿里旗下支付寶,天貓等 站在企業的角度這樣做有乙個好處 只要有乙個系統負責登入模組,其他的子系統就可以專注於自己系統的業務邏輯,需要的時候請求認證系統就可以.站在使用者的角度好處在於只要乙個賬...

對於golang,for range的乙個誤解

一般情況下我們對於陣列 slice map和channel等型別可能會用到for range進行遍歷。寫法通常如下。buf intfor k,v range buf我之前一度認為在每次迴圈遍歷的時候都會在棧上建立k,v兩個變數。以至於在 中我更偏向於用for迴圈去實現乙個陣列的遍歷。但其實並不是這樣...

對於防採集的乙個思路

最近,網路採集技術很是流行,利用採集技術,可以直接將其它站點的所有資料以及檔案全都存入自己的資料庫和目錄。很是不幸,本人的blog居然也被某採集狂盯上,以致iis數直接超出本人的小站的極限,到現在還是不能訪問,剛才搜了一下防採集的相關資料,大體有下面幾種方法 這幾種方法除了使用多模版,我覺得其它幾種...