亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

PHP加密文本文件并限制特定頁面的存取

添加時(shí)間:2014-8-7 16:47:18  添加: 思海網(wǎng)絡(luò) 
  盡管在一般情況下,你的網(wǎng)站往往相當(dāng)簡單以至它根本不要求使用數(shù)據(jù)庫;但是在有些情況下,你的站點(diǎn)可能想限制對(duì)某些頁面的存取。一般地,這意味著要使用一個(gè)數(shù)據(jù)庫來存儲(chǔ)口令和用戶名。然而,你還有一個(gè)更容易的方法-盡管其安全性差了一點(diǎn),但是它僅包含了極少的編碼。

  如果你在自己的Web應(yīng)用程序中使用了數(shù)據(jù)庫,那么你已經(jīng)能夠在某處存儲(chǔ)口令和用戶名,并且有一種方法可用來認(rèn)證訪問者。但是,當(dāng)因你的站點(diǎn)的安全性或復(fù)雜性需要而無法保證使用數(shù)據(jù)庫時(shí),那該怎么辦?可能有些時(shí)候你僅想要一些特別的人存取你的站點(diǎn)的某些頁面或一些區(qū)域。為此,一種很簡單的方式就是使用一個(gè)存儲(chǔ)口令的文本文件,并且創(chuàng)建一個(gè)頁面來提示訪問者輸入口令;如果口令與存儲(chǔ)在該文本文件中的內(nèi)容相匹配,那么允許該用戶存取受限的頁面;否則,在開始刷新頁面之前顯示一條適當(dāng)?shù)南⒁越蛊浯嫒 ?nbsp;

  為了進(jìn)一步的安全起見,你還可以用哈希法來加密存儲(chǔ)在文本文件中的口令,這樣如果它的內(nèi)容在某種程度上被發(fā)現(xiàn),它還將會(huì)是很難被查明。所有這些都可以用PHP方法來構(gòu)建,而且只需極少量的編碼。

  在正式開始前,你需要建立一個(gè)環(huán)境來測(cè)試和使用PHP;所以,你首先需要為PHP安裝和配置一個(gè)Web服務(wù)器。由于Apache與PHP協(xié)同工作良好,并且易于安裝和配置,因此我推薦使用這一方案。

  接下來,你需要?jiǎng)?chuàng)建一個(gè)頁面(類似下圖)-它有一個(gè)文本框用于接收來自訪問者的口令,還有一個(gè)submit按鈕來把它發(fā)送到你的PHP文件。這既可以是一個(gè)新頁面也可以是你的網(wǎng)站上的一個(gè)現(xiàn)有頁面的一部分。象下面簡單的代碼塊應(yīng)該足夠了:

<form name="passwordForm" method="post" action="restricted.php">
<p>Password:
<input type="password" name="password">
<input type="submit" name="Submit" value="Login">
</p>
</form>

  二、 創(chuàng)建PHP主頁

  接下來,你需要?jiǎng)?chuàng)建完成實(shí)際工作的PHP主頁。在一個(gè)文本編輯器中打開一個(gè)空白頁面,然后以標(biāo)準(zhǔn)方式打開一個(gè)PHP塊:

<?
  如我以前所提及的,PHP具有一套標(biāo)準(zhǔn)的函數(shù)和方法用來實(shí)現(xiàn)文件操作。其中,最為主要的幾個(gè)是fopen(),fread()和fclose()函數(shù)。為了進(jìn)行某種文件操作,我們需要先打開它,并且很明顯,這是使用fopen()函數(shù)實(shí)現(xiàn)的;而且,我們必須指定如何操作文件;讀文件,讀文件是最普通的任務(wù),但是另外一些額外標(biāo)志可以用來告訴程序是把文件指針放在開始還是文件的結(jié)束,以及如果文件還不存在的話是否創(chuàng)建該文件。然而,在本例中,我們所需要做的是,打開包含口令字的文本文件并讀取它。

  然后,首先創(chuàng)建一個(gè)到指定文本文件路徑的變量:

$fileloc = "/apachesite/docs/pass.txt"

  接下來,創(chuàng)建一個(gè)變量來存放文件指針:

$filetoread = fopen($fileloc, "r") or die("Could not open password file");

  你也可以使用die方法來結(jié)束該腳本,并且如果操作因某種原因失敗的話將在屏幕上打印一條適當(dāng)?shù)南ⅰR坏┐蜷_文件,你需要讀取它的內(nèi)容,以便把它與以口令字形式輸入的內(nèi)容進(jìn)行比較:

$storedpass = fread($filetoread, filesize($fileloc)) or die ("Could not read stored password");

  你應(yīng)該設(shè)置一個(gè)變量來存放文件中的數(shù)據(jù),并且調(diào)用fread()方法(它有兩個(gè)參數(shù):文件指針和文件長度)。你可能知道(也可能不知道)你的口令的長度。為了使將來的編程容易些(當(dāng)口令字需要改變時(shí)),你可以使用filesize()方法來得到文件長度。一旦文件不再需要,立即關(guān)閉之:

  fclose($filetoread);
  三、 使用口令

  為了使用輸入到HTML表單中的口令,你需要得到它并把它存儲(chǔ)到一個(gè)變量中。當(dāng)我們使用POST方法來把用戶輸入的內(nèi)容發(fā)送到PHP腳本時(shí),我們可以使用$_POST來取得輸入的口令:

$password = $_POST["password"];
  然后,我們可以簡單地把輸入的口令字與存儲(chǔ)的口令字進(jìn)行比較并采取相應(yīng)的措施:

if (empty ($password)){
die ("No password entered");
}
elseif ($password != $storedpass){
die ("Password Incorrect");
}
else{
Header("Location: securepage.htm")
}
?>
  第一個(gè)if語句處理一個(gè)空的$password變量以防止當(dāng)輸入框?yàn)榭諘r(shí),submit按鈕被點(diǎn)擊。如果用戶輸入的口令與存儲(chǔ)的那個(gè)不匹配,那么第二個(gè)語句執(zhí)行括號(hào)內(nèi)的代碼并且輸出一條消息顯示口令是錯(cuò)誤的。最后,如果前兩個(gè)條件都不滿足,那么,該腳本認(rèn)為口令一定是正確的并且把一個(gè)重定向頭(header)發(fā)送到瀏覽器以打開示例中的HTML頁面。

  在此能夠工作之前,你需要?jiǎng)?chuàng)建一個(gè)文本文件并且把它放到與該P(yáng)HP文件相同的目錄下。它需要包含你目前想要使用的以普通文本形式存儲(chǔ)的口令,并且應(yīng)該引用該P(yáng)HP文件名。保存所有這些文件,然后在一個(gè)瀏覽器中打開該HTML頁面,并用該表單進(jìn)行試驗(yàn)。該頁面應(yīng)該如所設(shè)想的那樣工作。

  當(dāng)你輸入正確的口令時(shí),如果你得到一個(gè)錯(cuò)誤消息,其內(nèi)容是:

"Warning: Cannot modify header information - headers already sent by (thepathtoyourphpfile)" 
  這意味著,你需要把位于你的Windows目錄下的php.ini文件中的output-buffering設(shè)置為"on"。

  四、 加密

  現(xiàn)在,我們開始分析在前面提到的加密問題。PHP具有一些內(nèi)置的MD5方法。這樣以來,在把訪問者輸入的口令與存儲(chǔ)的口令進(jìn)行比較之前,我們可以很容易地使用這些函數(shù)來轉(zhuǎn)換它。

  MD5是一種單向哈希算法,這意味著口令可以僅用一種方向進(jìn)行加密-從普通文本到加密文本,而以另外一種方向是不可能的。然而,這并不是就能使得它不可破解。這種加密容易被以暴力方式或者通過字典攻擊加以破解,但是它仍然還是比較安全的。你可以把下列一行添加到$password變量的聲明語句之后:

$md5password = (md5($password));
  這樣可以把一個(gè)輸入到該文本框中的內(nèi)容的加密版本保存到變量$md5password中。現(xiàn)在,你需要修改你的if語句,以便它把存儲(chǔ)的口令與新的加密的口令加以比較:

if (empty ($password))
{
 die ("No password entered");
}
elseif ($md5password != $storedpass)
{
 die ("Password Incorrect");
}
else
{
 header("Location: securepage.htm");
}
  如你所見,我們僅改變了語句的elseif部分中的變量。這是因?yàn)榧词故且粋(gè)空的輸入變量也被哈希化為一個(gè)32位值,因此$md5variable永遠(yuǎn)不可能為空,-即使在把任何文本輸入到輸入域之前點(diǎn)擊submit按鈕。

  現(xiàn)在,所有你需要做的就是,找到你想存儲(chǔ)在文本文件pass.txt中的該口令的哈希值。為此,你可以注釋掉整個(gè)的if語句并且再加上一個(gè)echo語句以把加密的口令顯示在屏幕上。然后,你還可以復(fù)制加密串并且把它保存到口令文件中。然而,你必須記住,在使用該腳本之前,取消注釋if語句并且刪除echo調(diào)用。


  就本文所討論的方法而言,上面的腳本框架所提供的已經(jīng)足夠了。另外,本文所討論的測(cè)試文件,盡管非常基本,但是該HTML頁面能夠被容易地加入到一個(gè)現(xiàn)有的頁面中去;你可以把它粘貼到一個(gè)窗口中去并整理它的樣式以匹配你的主頁的其余部分,并且你可能包含一個(gè)定時(shí)函數(shù)-它在把訪問者重新定向到一個(gè)安全的頁面前等待一段固定的時(shí)間,同時(shí)顯示一條消息指示口令正確。你還可以包含一個(gè)類似的函數(shù)集來重載初始頁面。

  總之,你可以使用本文所提供的腳本來限制到你的站點(diǎn)結(jié)構(gòu)中的特定頁面的存取。盡管該方法并沒有提供一個(gè)數(shù)據(jù)庫所提供的安全的用戶名/口令認(rèn)證方法,并且它意味著你必須把口令發(fā)給想存取安全頁面的任何人,但是它的確耗費(fèi)非常少的時(shí)間和編碼提供了一種簡單的安全層。

關(guān)鍵字:PHP、加密、數(shù)據(jù)庫、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站