PHP安全概述
什么是安全?安全是一種相對(duì)的度量,而不是絕對(duì)的標(biāo)準(zhǔn)。
不幸的是多數(shù)軟件項(xiàng)目將安全列為一個(gè)簡(jiǎn)單的需求。它安全嗎?這個(gè)問題的答案就像問某個(gè)東西是否是熱的一樣主觀。
達(dá)到安全的開銷應(yīng)該是合理的。
對(duì)于多數(shù)應(yīng)用來(lái)說達(dá)到足夠的安全級(jí)別是簡(jiǎn)單而成本低廉的。但是,如果因?yàn)樗枰Wo(hù)的信息非常有價(jià)值,或?qū)Π踩囊蠓浅?量蹋瑒t需要付出更多的代價(jià)來(lái)提高安全級(jí)別。這個(gè)成本應(yīng)該被包含在項(xiàng)目的預(yù)算中。
達(dá)到安全的易用性應(yīng)該是合理的。
很常見的現(xiàn)象是大幅度增加一個(gè)WEB應(yīng)用的安全的同時(shí),易用性也大為降低。密碼、SESSION過期時(shí)間,以及訪問控制都會(huì)給合法用戶的使用造成障礙。有時(shí)為應(yīng)用提供適當(dāng)?shù)陌踩欠浅1匾模菍?duì)于所有的應(yīng)用來(lái)說并不是只有這一種解決方案。當(dāng)貫徹安全法則的時(shí)候?qū)戏ㄓ脩舾恿粢馐欠浅C髦堑摹?/P>
安全必須是設(shè)計(jì)的一部分。
如果在設(shè)計(jì)應(yīng)用的時(shí)候沒有考慮安全,命中注定將要堅(jiān)持不懈的來(lái)尋找新的安全漏洞。仔細(xì)的寫程序并不能彌補(bǔ)糟糕的設(shè)計(jì)。
基本步驟在應(yīng)用中多為合法用戶著想。
一個(gè)安全的設(shè)計(jì)只是解決方案的一部分。開發(fā)的時(shí)候,當(dāng)編碼開始進(jìn)行的時(shí)候,為應(yīng)用中的那些合法用戶著想是很有必要的。一般,目標(biāo)是使應(yīng)用像預(yù)先制定的那樣工作,同時(shí)就有必要實(shí)現(xiàn)一個(gè)適當(dāng)?shù)膽?yīng)用功能,而這并沒有使得應(yīng)用更加安全。
培訓(xùn)自己。
能夠閱讀本指南的讀者說明本身關(guān)心安全,雖然聽起來(lái)像陳詞濫調(diào),但這是非常關(guān)鍵的一步。有大量的可用資源在WEB或書籍中,還有很多資源被PHP安全聯(lián)盟的資料庫(kù)收錄:http://phpsec.org/library/.
首先,過濾所有的外部數(shù)據(jù)。
數(shù)據(jù)過濾在任何語(yǔ)言、任何平臺(tái)上都是 WEB 應(yīng)用安全的基石。對(duì)變量進(jìn)行了初始化,并且過濾了從外部得到的所有的數(shù)據(jù),使得你事半功倍,花費(fèi)不多的經(jīng)理卻阻止了可能的主要安全漏洞。一個(gè)白名單比一個(gè)黑名單要好。這就意味著應(yīng)當(dāng)認(rèn)為所有的數(shù)據(jù)都是非法的直到它可以被證明為合法(比認(rèn)為所有的數(shù)據(jù)都是合法的直到它可以被證明為非法要好)。
