編寫PHP的安全策略
發(fā)表時(shí)間:2024-01-27 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]PHP最初是被稱作Personal Home Page,后來(lái)隨著PHP成為一種非常流行的腳本語(yǔ)言,名稱也隨之改變了,叫做Professional HyperText PreProcessor。以PHP4.2為例支持它的WEB服務(wù)器有:Apache, Microsoft Internet infor...
PHP最初是被稱作Personal Home Page,后來(lái)隨著PHP成為一種非常流行的腳本語(yǔ)言,名稱也隨之改變了,叫做Professional HyperText PreProcessor。以PHP4.2為例支持它的WEB服務(wù)器有:Apache, Microsoft Internet information Sereve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等。
PHP是一種功能強(qiáng)大的語(yǔ)言和解釋器,無(wú)論是作為模塊方式包含到web服務(wù)器里安裝的還是作為單獨(dú)的CGI程序程序安裝的,都能訪問文件、執(zhí)行命令或者在服務(wù)器上打開鏈接。而這些特性都使得PHP運(yùn)行時(shí)帶來(lái)安全問題。雖然PH P是特意設(shè)計(jì)成一種比用Perl或C語(yǔ)言所編寫的CGI程序要安全的語(yǔ)言,但正確使用編譯時(shí)和運(yùn)行中的一些配置選項(xiàng)以及恰當(dāng)?shù)膽?yīng)用編碼將會(huì)保證其運(yùn)行的安全性。
一、安全從開始編譯PHP開始。
在編譯PHP之前,首先確保操作系統(tǒng)的版本是最新的,必要的補(bǔ)丁程序必須安裝過(guò)。另外使用編譯的PHP也應(yīng)當(dāng)是最新的版本,關(guān)于PHP的安全漏洞也常有發(fā)現(xiàn),請(qǐng)使用最新版本,如果已經(jīng)安裝過(guò)PHP請(qǐng)升級(jí)為最新版本:4.2.3
相關(guān)鏈接:http://security.e-matters.de/advisories/012002.html
安裝編譯PHP過(guò)程中要注意的3個(gè)問題:
1、只容許CGI文件從特定的目錄下執(zhí)行:首先把處理CGI腳本的默認(rèn)句柄刪除,然后在要執(zhí)行CGI腳本的目錄在http.conf 文件中加入ScriptAlias指令。
#Addhadler cgi-script .cgi
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
<Directory "/usr/local/apache/cgi-bin'>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Directory "/home/*/public_html/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
SriptAlias的第一個(gè)參數(shù)指明在Web中的可用相對(duì)路徑,第二個(gè)參數(shù)指明腳本放在服務(wù)器的目錄。應(yīng)該對(duì)每個(gè)目錄
別名都用Directory,這樣可使得除系統(tǒng)管理員之外的人不知道Web服務(wù)器上CGI腳本的清單。
Directory允許用戶創(chuàng)建自己的CGI腳本。也可用SriptAliasMatch,但Directory更容易使用。 允許用戶創(chuàng)建自己
CGI腳本可能會(huì)導(dǎo)致安全問題,你可能不希望用戶創(chuàng)建自己的CGI。 Apache默認(rèn)配置是注釋掉cgi—script的處理句柄,但有/cgi-bin目錄使用SriptAlias和Directory指令。 你也可禁止CGI執(zhí)行,但仍允許執(zhí)行PHP腳本。
2.把PHP解析器放在web目錄外
把PHP解析器放在Web目錄樹外是非常重要的做法。這樣可以防止web服務(wù)器對(duì)PHP的解析器的濫用。特別是
不要把PHP解析器放在cgi-bin或允許執(zhí)行CGI程序的目錄下。然而,使用Action解析腳本是不可能的,因?yàn)橛肁ction指令時(shí),PHP解析器大多數(shù)要放在能夠執(zhí)行CGI的目錄下只有當(dāng)PHP腳本作為CGI程序執(zhí)行時(shí),才能把PHP解析器放在Web目錄樹之外。
如果希望PHP腳本作為CGI程序執(zhí)行(這們可以把PHP解析器放在Web目錄樹之外),可以這樣:
( 1)所有的PHP腳本必須位于能執(zhí)行CGI程序的目錄里。
( 2)腳本必須是可執(zhí)行的(僅在UNIX/Linux機(jī)器里)。
(3)腳本必須在文件頭包括PHP解析器的路徑。
你可用下面命令使PHP腳本為可執(zhí)行:
#chmod +x test.php4
這樣使在當(dāng)前目錄下的文件名為test.PhP4的腳本變?yōu)榭蓤?zhí)行。 下面是一個(gè)能作為CGI程序運(yùn)行的PHP腳的小例子。
#!/usr/local/bin/php
echo "This is a my small cgi program”
3. 按Apache模塊方式安裝:
當(dāng)將PHP作為Apache模塊使用時(shí),它將繼承Apche的用戶權(quán)限(一般情況下用戶為“nobody”)。這一點(diǎn)對(duì)于安全性和
驗(yàn)證有不少影響。例如,使用PHP訪問數(shù)據(jù)庫(kù),除非數(shù)據(jù)庫(kù)支持內(nèi)建的訪問控制,將不得不設(shè)置數(shù)據(jù)庫(kù)對(duì)于用戶“nobody”
的可訪問權(quán)限。這將意味著惡意的腳本在沒有訪問用戶名和密碼,也能訪問并修改數(shù)據(jù)庫(kù)。通過(guò)Apache驗(yàn)證來(lái)保護(hù)數(shù)據(jù)不被暴露,或者也可使用LDAP、.htaccess文件等設(shè)計(jì)自己的訪問控制模型,并在PHP腳本中將此代碼作為其中部分引入。 通常,一旦安全性建立,此處PHP用戶(此情形即Apache用戶)就風(fēng)險(xiǎn)大大降低了,會(huì)發(fā)現(xiàn)PHP護(hù)現(xiàn)在已被封禁了將可能的染毒文件寫入用戶目錄的能力。 此處最常犯的安全性錯(cuò)誤是賦予Apache服務(wù)器根(root)權(quán)限。 將Apache用戶權(quán)限提升到根權(quán)限是極端危險(xiǎn)的。可能會(huì)危及整個(gè)系統(tǒng),因此要小心使用sudo,chroot安全隱患大的命令等。除非你對(duì)安全有絕對(duì)的掌握,否則不要讓其以ROOT權(quán)限運(yùn)行。
二、讓PHP的使用更安全。
1、以安全模式運(yùn)行PHP
以安全模式運(yùn)行PHP是使PHP腳本安全使用的好方法,特別是在允許用戶使用自己開發(fā)的PHP腳本時(shí)。使用安全模式會(huì)使PHP在運(yùn)行函數(shù)時(shí)檢查是否存在安全問題。 include、readfile、fopen、file、unlink、rmdir等等:被包含的文件或者該文件所在目錄的所有者必須是正在運(yùn)行的腳本的所有者; Exec、System、Passthm等等:要執(zhí)行的程序必須位于特定的目錄(默認(rèn)為/usr/local/php/bin)。編譯PHP時(shí)可以用—with-exe-dir選項(xiàng)設(shè)定這個(gè)值。
Mysql—Connect:這個(gè)函數(shù)用可選的用戶名連接MySQL數(shù)據(jù)庫(kù)。在安全模式下,用戶名必須是當(dāng)前被執(zhí)行的腳本的所有者,或運(yùn)行httpd的用戶名(通常是nobody)。
HTTP Authentication:包含HTTP驗(yàn)證代碼腳本所有者的用戶ID(數(shù)字型)會(huì)自動(dòng)加到驗(yàn)證域。這樣可以防止有人通過(guò)抓取密碼的程序來(lái)欺騙同一個(gè)服務(wù)器上的HTTP驗(yàn)證腳本。
2、使用 用戶識(shí)別和驗(yàn)證
有時(shí)需要唯一地確認(rèn)一個(gè)用戶。用戶通常由請(qǐng)求和響應(yīng)系統(tǒng)確認(rèn)。用戶名/口令組合就是這種系統(tǒng)的一個(gè)很好的例子,比如系統(tǒng)要求給出A1i的口令,響應(yīng)的是Ali的口令。這樣驗(yàn)證是因?yàn)橹挥蠥li才知道這個(gè)口令。
(1)服務(wù)器端用戶驗(yàn)征
這是用于服務(wù)端上對(duì)PHP程序要求最小的驗(yàn)證方法。只要讓Apache來(lái)管理對(duì)用戶的驗(yàn)證就行了。
AuthName "Secret page" # The realm
AuthType Basic
# The password file has been placed outside the web tree
AuthUserFile /home/car2002/website.pw
<LIMIT GET POST>
require valid-user
</LIMIT>
你需要把上述文件(文件名為.htaccess)放在需要保護(hù)的地方。用Apache的htpasswd程序,可以建立包含用戶名和口令組合的文件。把這個(gè)文件放在Web目錄樹之外,只讓該文件的擁有者查看和修改這個(gè)文件。當(dāng)然,Web服務(wù)器必須能夠讀取這個(gè)文件。
如果想讀取被保護(hù)的目錄,Web服務(wù)器要求瀏覽器提供用戶名和密碼。瀏覽器彈出對(duì)話框,用戶可以輸入他們的用戶名和密碼。如果用戶名和密碼與口令文件中相符合,就允許用戶讀取被保護(hù)的頁(yè)面;反之,將得到錯(cuò)誤頁(yè)面,告訴用戶沒有通過(guò)驗(yàn)證。被保護(hù)的域會(huì)顯示出來(lái)以便用戶知道輸入那個(gè)用戶名和密碼。
(2)在PHP中進(jìn)行用戶識(shí)別和驗(yàn)證
和在Apache服務(wù)器端進(jìn)行用戶識(shí)別和驗(yàn)證相比,在PHP進(jìn)行用戶識(shí)別和驗(yàn)證有以下優(yōu)點(diǎn):
A、可注銷。
B、可失效。如用戶登錄后40分鐘沒有瀏覽你的網(wǎng)站,你可強(qiáng)制他們重新通過(guò)驗(yàn)證。
C、可定制。
D、可基于數(shù)據(jù)庫(kù)。你可以用保存在各種各樣的數(shù)據(jù)庫(kù)里的數(shù)據(jù)來(lái)驗(yàn)證用戶,并且記錄訪問者訪問網(wǎng)站的詳細(xì)日志。
E、可用于每個(gè)頁(yè)面。你可在每個(gè)頁(yè)面上決定是否需要驗(yàn)證。
F、你也可以使瀏覽器彈出對(duì)話框。下面的例子顯示了怎樣從,MySQL數(shù)據(jù)庫(kù)中檢索用名和口令:讓用戶填人用戶名和口令。
<?
if(!isset($PHP_AUTH_USER)) {
Header("WWW-authenticate: basic realm=\"restricted area\"");
Header( "HTTP/I.0 401 Unauthorized");
echo "You failed to provide the correct password...\n";
exit;
} else {
mysql_select_db("users") ;
$user_id = strtolower($PHP^AUTH_USER);
$result = mysql_query("SELECT password FROM users " .
"WHERE username = '$username'") ;
$row = mysql_fetch_array($result) ;
if ($PHP_AUTH_PW != $row["password"]) {
Header( "WWW-authenticate: basic realm=\"restricted area\"
Header( "HTTP/I.0 401 Unauthorized");
echo "You failed to provide the correct password...\n" ;
exit;
}
}
?>
Only users with a working username/password combination can see this
(3) 檢測(cè)IP地址
一般人們普遍認(rèn)為一個(gè)IP地址唯一地確定一個(gè)訪問者。但實(shí)際上并不是這樣的。代理服務(wù)器可用相同的IP地址發(fā)送不同用戶的請(qǐng)求。另外IP地址的盜用也普遍存在。檢測(cè) IP地址有它們的用處,但相當(dāng)有限。例如你是一個(gè)論壇版主,你發(fā)現(xiàn)某個(gè)用戶粘貼一些不健康的、違法的內(nèi)容。你可以找到他的IP地址,把從這個(gè)IP連進(jìn)來(lái)的用戶逐出論壇。使用下面一行命令將會(huì)得到某個(gè)特定請(qǐng)求的源IP地址:
# ip = $REMOTE_ADDR
4、使用PHP加密技術(shù)
在PHP中,加密技術(shù)主要用來(lái)加密信息、產(chǎn)生校驗(yàn)和和摘要。使用加密技術(shù)可大大地增強(qiáng)安全性能。 這里只講述使用加密技術(shù)的一些概念。如果你想進(jìn)一步了解,應(yīng)參考一些好的加密技術(shù)資料。加密技術(shù)的標(biāo)準(zhǔn)是Bmce Schneier的應(yīng)用加密技術(shù),非常值得一讀。他的網(wǎng)站(www.counterpane.com/labs.html )是在互聯(lián)網(wǎng)上查找加密技術(shù)資料的好起點(diǎn)。數(shù)據(jù)加密是一個(gè)非常復(fù)雜的話題,這里只簡(jiǎn)單介紹一下。
PHP中大多數(shù)的加密函數(shù)由mcrypt庫(kù)和mhash庫(kù)提供。你需要在系統(tǒng)中裝上這兩個(gè)庫(kù),在編譯時(shí)加上--ith-mcrypt和--ith-hash選項(xiàng)。PHP從 3.013版本開始支持mcrypt庫(kù)。
5、使用具有SSL技術(shù)
SSI是英文Server Side Includes的縮寫。使用具有SSL(安全套接字協(xié)議層)功能的web服務(wù)器,可以不用改變一行代碼而提高網(wǎng)站的安全性能。SSI使用加密方法來(lái)保護(hù)web服務(wù)器和瀏覽器之間的信息流。SSL不僅用于加密在互聯(lián)網(wǎng)上傳遞的數(shù)據(jù)流,而且還提供雙方身份驗(yàn)證。這樣,你就可以安全地在線購(gòu)物而不必?fù)?dān)心別人矢隨你的信用卡的信息。這種特性使得SSL適用于那些交換重要信息的地方,像電子商務(wù)和基于Web的郵件。
SSL使用公共密鑰加密技術(shù),服務(wù)器在連接結(jié)束時(shí)給客戶端發(fā)送公用密鑰用來(lái)加密信息,而加密的信息只有服務(wù)器用它自己持有的專用密鑰才能解開?蛻舳擞霉妹荑加密數(shù)據(jù),并且發(fā)送給服務(wù)端自己的密鑰,以唯一確定自己,防止在系統(tǒng)兩端之間有人冒充服務(wù)端或客戶端進(jìn)行欺騙。
加密的HTTP連接用443端口號(hào)代替80端口號(hào),以區(qū)別于普通的不加密的HTTP?蛻舳耸褂眉用蹾TTP連接時(shí)會(huì)自動(dòng)使用443端口而不是80端口。這使得服務(wù)端更容易作出相應(yīng)的響應(yīng)。
在Apache服務(wù)器下,可以通過(guò)直接編輯服務(wù)器配置文件或者在需要使用SSI的目錄中創(chuàng)建.htaccess文件來(lái)啟動(dòng)SSI。登錄到服務(wù)器,找到配置文件的存放目錄,使用文字編輯器打開文件srm.conf,找到以下幾行:
# If you want to use server side includes, or CGI outside
# ScriptAliased directories, uncomment the following lines.
#AddType text/x-server-parsed-html .shtml
#AddType application/x-httpd-CGI .CGI
將以AddType開頭的兩行并且去掉每一行最前面的"#"符號(hào)即可。保存所做的修改,然后再打開文件access.conf。
。糄irectory /usr/local/etc/httpd/htdocs>
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", or "FollowSymLinks"
Options Indexes FollowSymLinks
</Directory>
將其中的Options Indexes FollowSymLinks改為:Options Indexes FollowSymLinks Includes 即可。
6、使用Apache的suEXEC機(jī)制
通常CGI程序或PHP腳本只能以啟動(dòng)web服務(wù)器的用戶權(quán)限來(lái)運(yùn)行(通常為www或nobody),這樣會(huì)出現(xiàn)的情況之一是可以讀寫和修改由另一個(gè)用戶的CGI和PHP腳本生成的文件(如腳本和密碼文件)。也可能使用戶可以連接到其他用戶的數(shù)據(jù)庫(kù),但這與數(shù)據(jù)庫(kù)的配置有關(guān)。如MySQL的默認(rèn)配置便是允許的,但可以通過(guò)強(qiáng)制數(shù)據(jù)庫(kù)進(jìn)行口令驗(yàn)證來(lái)彌補(bǔ)此不足。PHP的safe—mode減少了這些問題,但所有的腳本仍然以相同的用戶標(biāo)識(shí)運(yùn)行。Apache可以解決這個(gè)問題。suEXEC(在執(zhí)行前改變用戶標(biāo)識(shí))是一個(gè)小工具,允許以任意用戶標(biāo)識(shí)運(yùn)行CGI程序,當(dāng)然也包括PHP腳本,但根用戶除外。而且可以和UseDir和VirtualHost項(xiàng)一起使用。
所以suEXEC也叫CGI封裝。這意味著在腳本運(yùn)行之前它需要通過(guò)一系列規(guī)定的安全檢查。隨Apache2。0版發(fā)布的suEXEC有26個(gè)檢查點(diǎn)。suEXEC能解決一些安全問題,同時(shí)允許用戶開發(fā)和更安全地執(zhí)行自己的腳本。但是suEXEC會(huì)降低服務(wù)性能,因?yàn)閟uEXEC只能運(yùn)行在CGI版本的PHP上,而CGI版本比模塊版本運(yùn)行速度慢。原因是模塊版本使用了線程,而使用CGI版本的是進(jìn)程。在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多。使用suEXEC的另外一個(gè)問題是它增加了編寫和使用PHP腳本的難度。你要確保腳本能通過(guò)suEXEC的檢驗(yàn)。否則,你的腳本不會(huì)被執(zhí)行。我們建議在你對(duì)安全性能要求比較高時(shí)使用suEXEC ,為此你還要以犧牲速度為代價(jià)。
7、創(chuàng)建安全的PHP腳本
有很多編程技巧使PHP腳本更安全地運(yùn)行。其中最重要的一條是使用一些安全常識(shí)。運(yùn)行PHP比運(yùn)行CGI腳本更安全,但它仍然有許多出現(xiàn)錯(cuò)誤的地方。轉(zhuǎn)換到安全運(yùn)行模式能夠限制出錯(cuò)所產(chǎn)生的結(jié)果。如果你的PHP腳本中有錯(cuò)誤,可能會(huì)被人找到并且利用它來(lái)破壞站點(diǎn)甚至數(shù)據(jù)庫(kù)。所以經(jīng)常備份也是必要的。
(1)安全設(shè)置軟件
基于Web的應(yīng)用程序,如在線目錄,通常都在無(wú)人密切監(jiān)視的情況下運(yùn)行。如果發(fā)生錯(cuò)誤時(shí),你不可能立即采取行動(dòng)。通常訪問者最先注意到所發(fā)生的問題,你應(yīng)該使他們很容易地報(bào)告所發(fā)生的問題。更進(jìn)一步,可以由構(gòu)成這個(gè)網(wǎng)站的腳本來(lái)跟蹤這些問題。例如,你的訪問者可能做一些你想不到的事情。也可能你對(duì)于重要函數(shù)所返回值沒有檢查,腳本可能會(huì)以不可預(yù)料的方式運(yùn)行。
寫出更加安全的程序,就可以避免這些問題。例如你應(yīng)該檢查數(shù)據(jù)庫(kù)函數(shù)的返回值,如果數(shù)據(jù)庫(kù)崩潰,顯示給用戶的應(yīng)該是出錯(cuò)的信息頁(yè)面而不是滿屏幕的錯(cuò)誤。你甚至可以讓腳本在發(fā)生嚴(yán)重問題,如數(shù)據(jù)庫(kù)崩潰、硬盤空間已滿的時(shí)候自動(dòng)通知你。你也應(yīng)該檢查從用戶傳來(lái)的所有數(shù)據(jù)。顯然后者更重要。 如果你的程序能夠應(yīng)付各種錯(cuò)誤,那么你的程序不僅更加可靠,而且可以花更少的時(shí)間來(lái)維護(hù)。這些時(shí)間可大大彌補(bǔ)你開發(fā)程序時(shí)所花的額外時(shí)間。
(2)存儲(chǔ)和交換敏感信息
顯然,你應(yīng)盡量避免在互聯(lián)網(wǎng)上以GET、POST、cookie或URL編碼的形式傳遞敏感信息,這樣使信息很容易被竊取。使用支持SSL的web服務(wù)器能夠做到這一點(diǎn),因?yàn)樗用苷军c(diǎn)和訪問者瀏覽器之間所有的信息流。
如果你沒有支持SSL的Web服務(wù)器,那么你需要其他的辦法。比如沒有必要總是發(fā)送數(shù)據(jù)到瀏覽器;把數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中,只向?yàn)g覽器發(fā)送關(guān)鍵字,這樣也很容易查找到所需要的數(shù)據(jù);并以加密的形式發(fā)送所有的數(shù)據(jù)等等。實(shí)現(xiàn)這種功能的最簡(jiǎn)單的辦法是使用Session。 PHP4支持本地化的Session功能,PHP3則要使用PHPMB庫(kù)。
HTTP 協(xié)議是一種無(wú)狀態(tài)協(xié)議,它不負(fù)責(zé)為好連接的狀態(tài)信息,因此無(wú)法跟蹤客戶端的各種信息,Session的出現(xiàn)改變這一狀況。當(dāng)用戶瀏覽一個(gè)支持Session功能的CGI腳本時(shí),在他離開這個(gè)網(wǎng)頁(yè)前可以將用戶信息保存在同意Session ID之下,也就是可以在不同的網(wǎng)頁(yè)之間偕同存取用戶信息。
如果不使用PHP的安全模式或在suEXEC下以CGI方式運(yùn)行PHP,那么監(jiān)視你的文件的內(nèi)容就不可能實(shí)現(xiàn)。此時(shí)唯一防止別人讀取數(shù)據(jù)的方法是盡快把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。
(3)檢查用戶輸入
Per1語(yǔ)言有個(gè)特性叫污點(diǎn)檢測(cè)(taint checking)。當(dāng)污點(diǎn)檢測(cè)生效時(shí),即使沒有發(fā)生重大錯(cuò)誤,你也不能運(yùn)行含有可疑變量的函數(shù)。一個(gè)變量,當(dāng)它的值是用戶提供數(shù)據(jù)的一部分或全部時(shí)就變成可疑的了,因?yàn)檫@些數(shù)據(jù)被認(rèn)為是不安全的。這樣可提高系統(tǒng)安性。 PHP沒有這個(gè)特性,但PHP有escapeshellcmd函數(shù),可以達(dá)到同樣的效果。另一個(gè)不讓用戶濫用腳本的方法是只允許使用經(jīng)過(guò)嚴(yán)格檢查的輸入。
(4)使用最新的PHP版本 4.2.xx
在很長(zhǎng)一段時(shí)間內(nèi),PHP作為服務(wù)器端腳本語(yǔ)言的最大賣點(diǎn)之一就是會(huì)為從表單提交的值自動(dòng)建立一個(gè)全局變量。在PHP 4.1中,PHP的制作者們推薦了一個(gè)訪問提交數(shù)據(jù)的替代手段。在PHP 4.2中,他們?nèi)∠四欠N老的做法。在PHP 4.1中,添加了一組特殊數(shù)據(jù)以訪問外部數(shù)據(jù)。這些數(shù)組可以在任何范圍內(nèi)調(diào)用,這使得外部數(shù)據(jù)的訪問更方便。在PHP 4.2中,register_globals被默認(rèn)關(guān)閉以鼓勵(lì)使用這些數(shù)組以避免無(wú)經(jīng)驗(yàn)的開發(fā)者編寫出不安全的PHP代碼。作出這樣的變化是出于安全性的考慮的。
三、總結(jié)
徹底安全的系統(tǒng)從理論上講不可能,因此我們所指安全性只是在代價(jià)與可用性間作平衡。若是用戶提交的每一個(gè)變量都要求有生物學(xué)驗(yàn)證(如指紋鑒定),則將獲得極高水平的可靠性。但是也會(huì)造成用戶填寫一個(gè)表格就要幾十分鐘。這時(shí)用戶就會(huì)采取繞過(guò)安全驗(yàn)證的方法。一個(gè)系統(tǒng)的可靠性只能由整個(gè)鏈條中最薄弱的環(huán)節(jié)來(lái)決定。在任何安全系統(tǒng)里面,人是最脆弱的連接,單單技術(shù)本身不能讓系統(tǒng)安全。
PHP 還處在不斷發(fā)展的過(guò)程中,你需要經(jīng)常關(guān)注他的安全信息。這里筆者推薦你經(jīng)常關(guān)注安全焦點(diǎn)(www.security-focus.com )和Packetstorm(www.packetstorm.com )。