日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析PHP安全編程的加密功能_PHP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:如何在PHP中將圖片存放ORACLE中
我這里提供一個(gè)用PHP操縱blob字段的例子給你,希望能有所幫助! 這個(gè)例子是把用戶上傳的圖片文件存放到BLOB中。 假設(shè)有一個(gè)表,結(jié)構(gòu)如下: 以

預(yù)備知識(shí)

在詳細(xì)介紹PHP的安全功能之前,我們需要花

點(diǎn)時(shí)間來(lái)向沒(méi)有接觸過(guò)這方面內(nèi)容的讀者介紹一些有關(guān)密碼學(xué)的基本知識(shí),如果對(duì)密碼學(xué)的基本概念已經(jīng)非常熟悉,就可以跳過(guò)去這一部分。

密碼學(xué)可以通俗地被描述為對(duì)加/解密的研究和實(shí)驗(yàn),加密是將易懂的資料轉(zhuǎn)換為不易懂資料的過(guò)程,解密則是將不易懂的資料轉(zhuǎn)換為原來(lái)易懂資料的過(guò)程。不易懂的資料被稱作密碼,易懂的資料被稱作明碼。

數(shù)據(jù)的加/解密都需要一定的算法,這些算法可以非常地簡(jiǎn)單,如著名的凱撒碼,但當(dāng)前的加密算法要相對(duì)復(fù)雜得多,其中一些利用現(xiàn)有的方法甚至是無(wú)法破譯的。

PHP的加密功能

只要有一點(diǎn)使用非Windows平臺(tái)經(jīng)驗(yàn)的人可能對(duì)crypt()也相當(dāng)熟悉,這一函數(shù)完成被稱作單向加密的功能,它可以加密一些明碼,但不能夠?qū)⒚艽a轉(zhuǎn)換為原來(lái)的明碼。盡管從表面上來(lái)看這似乎是一個(gè)沒(méi)有什么用處的功能,但它的確被廣泛用來(lái)保證系統(tǒng)密碼的完整性。因?yàn)�,單向加密的口令一旦落入第三方人的手里,由于不能被還原為明文,因此也沒(méi)有什么大用處。在驗(yàn)證用戶輸入的口令時(shí),用戶的輸入采用的也是單向算法,如果輸入與存儲(chǔ)的經(jīng)加密后的口令相匹配,則輸入的口信一定是正確的。

PHP同樣提供了使用其crypt()函數(shù)完成單向加密功能的可能性。我將在這里簡(jiǎn)要地介紹該函數(shù):

string crypt (string input_string [, string salt])

其中的input_string參數(shù)是需要加密的字符串,第二個(gè)可選的salt是一個(gè)位字串,它能夠影響加密的暗碼,進(jìn)一步地排除被稱作預(yù)計(jì)算攻擊的可能性。缺省情況下,PHP使用一個(gè)2個(gè)字符的DES干擾串,如果你的系統(tǒng)使用的是MD5(我將在以后介紹MD5算法),它會(huì)使用一個(gè)12個(gè)字符的干擾串。順便說(shuō)一下,可以通過(guò)執(zhí)行下面的命令發(fā)現(xiàn)系統(tǒng)將要使用的干擾串的長(zhǎng)度:

print "My system salt size is: ". CRYPT_SALT_LENGTH;

系統(tǒng)也可能支持其他的加密算法。crypt()支持四種算法,下面是它支持的算法和相應(yīng)的salt參數(shù)的長(zhǎng)度:

算法 Salt長(zhǎng)度

以下為引用的內(nèi)容:

CRYPT_STD_DES 2-character (Default)
CRYPT_EXT_DES 9-character
CRYPT_MD5 12-character beginning with 102/td>
CRYPT_BLOWFISH 16-character beginning with 102/td>

用crypt()實(shí)現(xiàn)用戶身份驗(yàn)證

作為crypt()函數(shù)的一個(gè)例子,考慮這樣一種情況,你希望創(chuàng)建一段PHP腳本程序限制對(duì)一個(gè)目錄的訪問(wèn),只允許能夠提供正確的用戶名和口令的用戶訪問(wèn)這一目錄。我將把資料存儲(chǔ)在我喜歡的數(shù)據(jù)庫(kù)MySQL的一個(gè)表中。下面我們以創(chuàng)建這個(gè)被稱作members的表開(kāi)始我們的例子:

以下為引用的內(nèi)容:

mysql>CREATE TABLE members (
->username CHAR(14) NOT NULL,
->password CHAR(32) NOT NULL,
->RIMARY KEY(username)
->);

然后,我們假定下面的數(shù)據(jù)已經(jīng)存儲(chǔ)在該表中:

以下為引用的內(nèi)容:

用戶名 密碼
clark keloD1C377lKE
bruce ba1T7vnz9AWgk
peter paLUvRWsRLZ4U

這些加密的口令對(duì)應(yīng)的明碼分別是kent、banner和parker。注意一下每個(gè)口令的前二個(gè)字母,這是因?yàn)槲沂褂昧讼旅娴拇a,根據(jù)口令的前二個(gè)字母創(chuàng)建干擾串的:

以下為引用的內(nèi)容:

.
= substr(, 0, 2);
= crypt(, );
// 然后就和用戶名一起存儲(chǔ)在MySQL中

我將使用Apache的口令-應(yīng)答認(rèn)證配置提示用戶輸入用戶名和口令,一個(gè)鮮為人知的有關(guān)PHP的信息是,它可以把Apache的口令-應(yīng)答系統(tǒng)輸入的用戶名和口令識(shí)別為和,我將在身份驗(yàn)證腳本中用到這二個(gè)變量�;ㄒ恍⿻r(shí)間仔細(xì)閱讀下面的腳本,多注意一下其中的解釋,以便更好地理解下面的代碼:

分享:解析PHP在linxu下的安裝與配置
環(huán)境需求與準(zhǔn)備工作 在安裝 PHP 做為 WWW 服務(wù)器的一部份時(shí),我們可以考慮用 UNIX 操作系統(tǒng);或者是 Windows NT/95 等 Win32 API 的平臺(tái)。當(dāng)然,大部份的人都會(huì)使用 UNIX 來(lái)當(dāng)作 PHP 的

共6頁(yè)上一頁(yè)123456下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類:PHP教程/更新時(shí)間:2009-09-17
相關(guān)PHP教程