閱讀目錄

前言

手冊在(一)中有原版下載,在(三)中有在線版本,建議對(duì)照手冊食用。

在本文發(fā)布的時(shí)候前幾天好像阿里做出了修改,在(一)中的地址下載的版本為1.0.2可能對(duì)一些之前的改動(dòng)和修改。

本文依舊還是針對(duì)1.0.0的版本寫的,不過出入應(yīng)該不大。

有關(guān)編程規(guī)范(一)http://www.cnblogs.com/linkstar/p/6413402.html

有關(guān)異常日志(二)http://www.cnblogs.com/linkstar/p/6415788.html

有關(guān)數(shù)據(jù)庫的(三)http://www.cnblogs.com/linkstar/p/6429770.html

有關(guān)項(xiàng)目工程(四)http://www.cnblogs.com/linkstar/p/6439871.html

該說的我覺得(一)里面我都說完了,那么就直接進(jìn)入正題吧。

 

安全規(guī)約

說道安全,其實(shí)有很多地方都是需要注意的,可能你一開始寫代碼的時(shí)候,可能幾乎不管安全問題。但是等到項(xiàng)目上線之后,有的可能會(huì)出現(xiàn)問題,有的可能不會(huì)。因?yàn)橛械臅r(shí)候你的項(xiàng)目根本就沒有人想要黑你,都是正常的用戶,所以不會(huì)出現(xiàn)問題。但是一旦等項(xiàng)目做大了,用戶多了,漸漸的,就有人想要用非正常的手段來獲取利益,漸漸的所有的安全問題就會(huì)暴露出來。說實(shí)在話,項(xiàng)目被黑的還算少數(shù),主要是服務(wù)器被黑的可能性高,經(jīng)常會(huì)有人想要攻擊你的服務(wù)。下面我就手冊里面給出的總結(jié)幾條進(jìn)行分析補(bǔ)充。

 

權(quán)限控制

對(duì)于普通用戶來說。需要限制用戶的權(quán)限,讓他不能看見他不應(yīng)該看見的東西。

對(duì)于后臺(tái)管理人員來說,常常使用的是RBAC,也就是基于角色去控制用戶的訪問權(quán)限。

權(quán)限的控制是十分必要的,它可以屏蔽掉很多不應(yīng)該出現(xiàn)的非法操作,沒有權(quán)限,你就不應(yīng)該讓他操作。

 

用戶數(shù)據(jù)保護(hù)

對(duì)于用戶的數(shù)據(jù)一定要進(jìn)行保護(hù),因?yàn)閷?duì)于用戶來說,其實(shí)把手機(jī),姓名等給了平臺(tái),平臺(tái)就有義務(wù)進(jìn)行保護(hù),不能讓用戶的隱私被泄露。這是對(duì)用戶起碼的尊重,如果用戶因?yàn)槠脚_(tái)的信息暴露而導(dǎo)致被騷擾,或者是利益上面的損失,那么是不可挽回的。而且,對(duì)于用戶的密碼等重要信息越加是。

 

sql注入

現(xiàn)在已經(jīng)少了,雖然說這是一種常見的攻擊方式,但是現(xiàn)在很多框架都已經(jīng)幫我們很好的杜絕了這樣的攻擊,常見的如mybatis和hibernate,這樣的框架在某種程度上面執(zhí)行的sql已經(jīng)不會(huì)存在sql注入的風(fēng)險(xiǎn),至少我是沒有遇到過了,不過也不排除有一些漏洞。所以sql注入這點(diǎn)還是能有保障的。#和$這里我就不多說了,手冊在之前的sql規(guī)范中已經(jīng)提到了。

 

用戶輸入的參數(shù)判斷

對(duì)于用戶的參數(shù)判斷,有兩個(gè)地方需要注意,第一個(gè)是頁面上面的判斷,使用js等對(duì)于用戶輸入的信息合法性進(jìn)行判斷,第二個(gè)是后臺(tái)的判斷,也就是java代碼中的判斷。很多人說,我后臺(tái)判斷不就好了嗎?下面說說理由,首先如果只有前臺(tái)判斷肯定是不行的,對(duì)于哪怕是低級(jí)碼農(nóng)來說,繞過你的js簡直輕而易舉,js只能對(duì)于普通正常使用的用戶進(jìn)行判斷;再者,有人說只進(jìn)行后臺(tái)判斷,這樣也不可以,如果所有的參數(shù)都進(jìn)行了后臺(tái)邏輯的判斷,那么對(duì)于普通用戶也是如此,那么服務(wù)器的壓力可想而知有多大,舉個(gè)簡單的例子,用戶名對(duì)不對(duì),昵稱對(duì)不對(duì),密碼對(duì)不對(duì),等等一系列都給服務(wù)器,而且每個(gè)用戶都一樣,那么服務(wù)器也惱火了。大多數(shù)時(shí)候,用戶還是正常使用的,js的判斷能減少很多服務(wù)器的訪問壓力,最后可能到達(dá)服務(wù)器的時(shí)候,只需要一遍注冊就通過了,而不需要訪問三四次。

 

XSS

接著上面的說,如果對(duì)于用戶輸入的數(shù)據(jù)不進(jìn)行很好的檢測和過濾的話,就會(huì)讓XSS攻擊有可乘之機(jī),關(guān)于XSS網(wǎng)上有很多原理的講解,我這邊也不多說,簡單的說對(duì)于XSS我們只要對(duì)所有用戶輸入的數(shù)據(jù)進(jìn)行過濾,把會(huì)出現(xiàn)問題的符號(hào)等進(jìn)行檢測,就可以防止這樣的攻擊,具體代碼和防御方式請(qǐng)參考網(wǎng)上給很出的,我自己是利用xssfilter實(shí)現(xiàn)的。

 

頁面的輸出

在頁面的輸出時(shí)候,很多人會(huì)直接使用EL表達(dá)式去輸出,但是這其實(shí)是很危險(xiǎn)的,有些時(shí)候惡意用戶會(huì)鉆漏洞讓你的頁面上面輸出一些奇怪的釣魚鏈接,或是奇怪的html代碼。所以我推薦是使用JSTL <c:out>標(biāo)簽去輸出,這樣即使輸出的是html代碼也不會(huì)被瀏覽器所解釋運(yùn)行,能避免一些麻煩。

 

限制訪問方式

很多時(shí)候get訪問方式需要被限制,不然會(huì)導(dǎo)致很多問題,如瀏覽器地址欄暴露信息,或者第三方get請(qǐng)求攻擊等等,如果你使用的是springMVC,那么請(qǐng)一定要配置好你的method=RequestMethod.POST,對(duì)于不同的請(qǐng)求請(qǐng)進(jìn)行訪問方式的約束和限制。

 

CSRF

這是一種常見的攻擊方式,但是可能對(duì)于一些新手來說,不會(huì)去注意,因?yàn)樵谒麄冄壑惺澜邕€是很美好的,所以腦子里面還沒有安全這個(gè)概念。這個(gè)漏洞也就存在于很多的中小型網(wǎng)站中,而且用戶是訪問一些別的網(wǎng)站而導(dǎo)致你的網(wǎng)站出現(xiàn)問題,所以這種攻擊隱蔽性很高,一般很難被察覺。具體CSRF攻擊的方式以及原理,網(wǎng)上都有很多,如何防御也有,我這里也就不班門弄斧了,主要就是提醒一些同學(xué)需要注意一下這個(gè)問題,通常建議是加入隨機(jī)token來防御這樣的攻擊。

 

重復(fù)提交

這個(gè)問題也是普遍存在的,有些是用戶無意造成的,可能因?yàn)榫W(wǎng)速慢,一下子沒加載出來,用戶就瘋狂的點(diǎn)擊,而造成重復(fù)的遞交多次請(qǐng)求。還有一些就是故意造成的,用戶利用bug不停調(diào)用,導(dǎo)致你的短信接口瘋狂調(diào)用,導(dǎo)致你的服務(wù)器資源不停的被訪問占用,導(dǎo)致服務(wù)器最后宕機(jī)。所以對(duì)于重復(fù)提交來說必須進(jìn)行嚴(yán)格的限制,特別還有一些ajax的請(qǐng)求也是一樣的,需要進(jìn)行限制。普遍采用的也是加入token,然后服務(wù)端進(jìn)行驗(yàn)證的方式,雖然有點(diǎn)笨,但是嚴(yán)格可行。也許還有別的更好的方式,我也只能說,教練,我也想學(xué)。

 

關(guān)鍵詞過濾

如果你玩過游戲,肯定知道,很多時(shí)候,你在游戲頻道說話的時(shí)候,如果出現(xiàn)臟話,都會(huì)被變成***。這個(gè)在網(wǎng)站上面很多平臺(tái)都沒有注意。對(duì)于這些有違反規(guī)定的發(fā)言,都需要進(jìn)行嚴(yán)格的審核,因?yàn)槿绻嘘P(guān)部門發(fā)現(xiàn)在你這個(gè)平臺(tái)上面發(fā)現(xiàn)有什么政治言論啊。。。等等,你這個(gè)平臺(tái)就等著被查水表咯。所以這點(diǎn)也是需要提醒大家的。如果發(fā)布的是全平臺(tái)可見的消息,最好需要后臺(tái)審核才能上線,如果是對(duì)話性質(zhì),最好進(jìn)行關(guān)鍵詞過濾,以防不測啊。

 

檢測軟件

現(xiàn)在對(duì)于一些已知的漏洞,很多檢測軟件已經(jīng)能很好的檢測出網(wǎng)站可能存在的漏洞了,很多時(shí)候可以利用這些軟件去檢測你寫好的網(wǎng)站是否存在問題,當(dāng)然這樣的軟件很多,這邊我使用的是IBM Security AppScan,這個(gè)軟件我使用的很多,檢測出現(xiàn)的問題很詳細(xì),而且會(huì)給出一些普遍的解決方案,也比較容易使用和上手。

 

大致我遇到的安全上面的問題總結(jié)就是這些,手冊上面也基本都給出了,有的我也進(jìn)行了補(bǔ)充。因?yàn)槲彝瓿傻木W(wǎng)站其實(shí)訪問量也并非大到被各種攻擊,所以安全上面遇到的問題經(jīng)驗(yàn)也不是很多,基本上也就這些了。其實(shí)安全這塊的話,講真,有的時(shí)候被攻擊了就能漲經(jīng)驗(yàn)了。。。

分類: 阿里巴巴Java開發(fā)手冊[筆記]