WEB安全實(shí)踐 之 實(shí)現(xiàn)手法(一)設(shè)計(jì)上的安全 第一節(jié):認(rèn)證

*適合有一定網(wǎng)絡(luò)(WEB)安全知識(shí)的同行閱讀

實(shí)現(xiàn)手法(一)

1. 認(rèn)證

1.1 限制訪問
1.1.1 目的
針對(duì)特定的用戶才能訪問的資源,以及管理員角色才能進(jìn)行的操作等,需要對(duì)權(quán)限有差別化地控制。

1.1.2 步驟
(1)明確基本方針(policy)
哪些資源[*1],哪些人[*2],可以進(jìn)行怎樣的操作。
*1 圖片、文字、文件等;*2 匿名用戶、注冊(cè)用戶、VIP用戶、管理員等

(2)授權(quán)認(rèn)證
基于既定的方針,會(huì)有不特定多數(shù)的人訪問的站點(diǎn)(比如網(wǎng)購(gòu)),是哪些人他們?cè)陧撁嫔献隽四男┎僮鳎\(yùn)營(yíng)方可能需要掌握。
這時(shí)就需要實(shí)現(xiàn)認(rèn)證的功能,比如常見的會(huì)員登錄,登錄后點(diǎn)擊購(gòu)買按鈕等,而一旦被他人冒用,就會(huì)造成金錢等利益上的損失。
畢竟,網(wǎng)絡(luò)上,大家都看不見對(duì)方,風(fēng)險(xiǎn)很高,只能通過站點(diǎn)(尤其是數(shù)據(jù)庫(kù)和日志)收集到的各種信息來識(shí)別個(gè)人。

(3)方針的執(zhí)行
確認(rèn)了本次的訪問者誰,并且判定了本次其想要進(jìn)行操作的有效性[*1]之后,才允許其進(jìn)行本次的操作。
*1就算確認(rèn)了訪問者是注冊(cè)用戶,但其想訪問VIP用戶的資源或進(jìn)行相關(guān)操作,也是不被允許的

1.2 認(rèn)證的種類:認(rèn)證,是指核實(shí)訪問者身份 時(shí)的處理
1.2.1 知識(shí)性(也包括防止注冊(cè)機(jī)器人)
目前普遍使用的密碼認(rèn)證。
這種只有本人才知道的信息[*1],雖然很單純,但對(duì)于確認(rèn)訪問者本人是非常有效的方式。
而且,在被攻擊(篡改密碼等)之后,可以通過找回密碼或?qū)柮孛軉栴}等功能[*2] ,比較容易地幫助用戶恢復(fù)其認(rèn)證信息。
*1需要加密,即便是技術(shù)人員也不能輕易地解密,最大程度保護(hù)用戶隱私;
*2在設(shè)計(jì)及開發(fā)時(shí),就需要做到未雨綢繆,引入這些機(jī)制

1.2.2 所有物
電子信息。
經(jīng)過權(quán)威以及信用機(jī)構(gòu)發(fā)行的電子類授權(quán)物。可以是在瀏覽器上事先安裝的插件等(虛擬式),也可以是USB插入電腦等(物理式)。
而且,就算是丟失了,也可以申請(qǐng)重新發(fā)行,同時(shí)讓原有物失效。

1.3 密碼認(rèn)證的設(shè)計(jì): 密碼強(qiáng)度
字典式攻擊是最普遍的一種攻擊方式。
密碼的位數(shù)過少,包含自己的姓名(字母)、生日、電話號(hào)碼等相對(duì)容易被猜出來的拼音數(shù)字,成功破解的可能性比較大。
當(dāng)用戶在注冊(cè)或更改自己的信息時(shí),提示其不合規(guī)范,強(qiáng)制性讓其重新輸入,在設(shè)計(jì)和開發(fā)時(shí)需要引入這種機(jī)制, 但不能過于復(fù)雜[*1]。
只要輸入的內(nèi)容不是過于簡(jiǎn)單的,就盡量不要硬性規(guī)定不能輸入哪些字符[*1],不過可以根據(jù)運(yùn)維需要,規(guī)定必須輸入的最小長(zhǎng)度及哪些字符。
*1不然會(huì)引起用戶的不滿

1.4 封鎖賬戶:對(duì)于已注冊(cè)用戶,登錄時(shí)的認(rèn)證
1.4.1 鎖定:字典式攻擊的有效手段之一
(1)連續(xù)輸入多次密碼,均與實(shí)際密碼不符合時(shí),賬戶即被封鎖。
(2)如果一段時(shí)期內(nèi)鎖定后自動(dòng)解鎖的現(xiàn)象2次以上反復(fù)發(fā)生,并且系統(tǒng)判定是均來自同一IP時(shí),需要封鎖IP。

1.4.2 解鎖
(1)一定時(shí)間后,自動(dòng)解鎖
(2)強(qiáng)制性要求重新設(shè)置密碼
(3)由運(yùn)營(yíng)方手動(dòng)解鎖[*1]
*1 安全性要求較嚴(yán)格的情況(銀行、軍事等),需要本人提交書面申請(qǐng)

1.5 保護(hù)密碼
1.5.1 加密
一旦保存密碼(以及用戶名等登錄所需信息)的媒介物被外泄,涉及到的用戶信息可以輕易地被窺視,后果極其嚴(yán)重。
不過如果事前引入了加密機(jī)制,雖然不能做到100%保障密碼不被破解,也至少可以極大程度地增加破解的成本,爭(zhēng)取時(shí)間盡早發(fā)現(xiàn)亡羊補(bǔ)牢。

1.5.2 加密的技巧
對(duì)于專業(yè)黑客來說,字典式攻擊是慣用手段。所以如果只對(duì)密碼本身加密[*1],通過字典式攻擊被破解的成本也會(huì)相對(duì)降低。
所以,用戶名+密碼,把這個(gè)組合作為整體來加密,甚至還可以加入電話號(hào)碼或生日等做為組合體,盡可能地增加復(fù)雜度。
*1 哈希算法(Hash)是主流

1.5.3 重置密碼
通過哈希算法加密后,密碼內(nèi)容不可逆向恢復(fù)!
所以,在設(shè)計(jì)階段就要考慮讓用戶重置新密碼,而非單純地把原有密碼提示給用戶,也沒有必要。

1.6 給用戶顯示錯(cuò)誤信息的技巧
用戶名或密碼輸入錯(cuò)誤后無法通過認(rèn)證,這時(shí)需要給用戶提示相關(guān)內(nèi)容。
不管是用戶名錯(cuò)誤還是密碼錯(cuò)誤,或者是兩者都輸入錯(cuò)誤而導(dǎo)致無法通過認(rèn)證,原則上只需要向用戶顯示固定統(tǒng)一的信息,而非”錯(cuò)哪指哪“。
不然,如果顯示”用戶名不正確“,”密碼不正確“等信息,會(huì)給攻擊者暴露出另一層信息:
A. “用戶名不正確,那意味著密碼應(yīng)該正確”,會(huì)變相鼓勵(lì)攻擊者繼續(xù)對(duì)用戶名進(jìn)行排查
B. “密碼不正確,那意味著用戶名應(yīng)該正確”,會(huì)變相鼓勵(lì)攻擊者繼續(xù)對(duì)密碼進(jìn)行排查

1.7 認(rèn)證時(shí)記錄日志的技巧
不能把密碼寫入到日志文件中保存,一旦涉及到注冊(cè)及登錄信息的日志文件被外泄,加密也無濟(jì)于事。
A. 用戶正常地登錄,是直接的暴露了密碼信息
B. 用戶可能一時(shí)手誤輸錯(cuò)了大小寫或字?jǐn)?shù)錯(cuò)了,或者是忘記了密碼而試著使用登錄其它系統(tǒng)所用的密碼(*1)
*1 這時(shí)雖然無法登錄本系統(tǒng),但可能間接對(duì)其它系統(tǒng)的個(gè)人信息產(chǎn)生威脅

1.8 郵件認(rèn)證
1.8.1 新注冊(cè)用戶
注冊(cè)提交時(shí),給輸入的郵箱發(fā)一封郵件,起到臨時(shí)確認(rèn)郵箱是否有效[*1],如果自己收不到,則證明輸入有問題或郵件服務(wù)本身出了問題。
*1 用戶手誤輸入某些字符,郵件服務(wù)已經(jīng)停止,以及機(jī)器人注冊(cè)使用的郵箱等無法正常收到郵件

1.8.2 已注冊(cè)用戶
修改提交時(shí),與新注冊(cè)時(shí)類似,先給輸入的新郵箱發(fā)一封郵件,起到臨時(shí)確認(rèn)郵箱是否有效。

1.8.3 郵箱有效性的確認(rèn)
不管新注冊(cè)還是已注冊(cè)后的修改,需要在臨時(shí)確認(rèn)用的郵件里付上激活鏈接,有效地阻止攻擊者篡改郵箱。
A. 新注冊(cè)時(shí),點(diǎn)擊此鏈接即完成正式確認(rèn),后續(xù)的系統(tǒng)功能即可使用
B. 修改時(shí),也需點(diǎn)擊此鏈接即完成正式確認(rèn),同時(shí)給舊郵箱發(fā)一封郵件,說明此次修改了郵箱,今后舊郵箱失效,請(qǐng)新郵箱

1.9 手機(jī)號(hào)認(rèn)證
與郵箱認(rèn)證有相似之處。
(1)給用戶輸入的手機(jī)號(hào)發(fā)一條短信,成為臨時(shí)確認(rèn)用。其中寫有認(rèn)證碼[*1],如果自己收不到,則證明號(hào)碼輸入有問題[*2]。
(2)提交后,系統(tǒng)會(huì)提示輸入收到的認(rèn)證碼,在規(guī)定的時(shí)間內(nèi)輸入認(rèn)證碼后再次提交即證明該手機(jī)號(hào)是用戶本人在使用,完成認(rèn)證。
*1 此時(shí)在系統(tǒng)后臺(tái)保留著這個(gè)認(rèn)證碼;*2 也不排除手機(jī)在圈外等極少情況

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評(píng)論 0 286
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評(píng)論 1 280
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,339評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容