徐國輝
摘 要:PHP語言豐富的內(nèi)置函數(shù)庫和良好的移植性在網(wǎng)站開發(fā)中發(fā)揮了極其重要的作用。本文闡述了PHP數(shù)據(jù)加密技術(shù)和PHP內(nèi)置函數(shù)在開發(fā)的WEB頁面中的安全保障作用。
關(guān)鍵詞:php;加密技術(shù);內(nèi)置函數(shù)
1 PHP語言是當前web開發(fā)最熱門的語言之一,其豐富的內(nèi)置函數(shù)庫和良好的移植性在網(wǎng)站開發(fā)中發(fā)揮了極其重要的作用。數(shù)據(jù)加密技術(shù)是計算機文件傳輸中進行安全保護的一種比較常用的策略,本文闡述了PHP數(shù)據(jù)加密技術(shù)和PHP內(nèi)置函數(shù)在開發(fā)的WEB頁面中的安全保障作用。
2 PHP中常見的加密技術(shù)
2.1 urlencode()函數(shù)加密技術(shù)
PHP通過GET()方法提交的信息,會以查詢字符串的形式顯示在瀏覽器的地址欄中,這樣會給網(wǎng)站的安全帶來很大的隱患,為了解決這個問題,可以對查詢字符串進行URL編碼。
Php中實現(xiàn)對查詢字符串進行URL編碼,可以通過urlencode()函數(shù)實現(xiàn)。該函數(shù)的使用格式如下:
String urlencode(string str)
該函數(shù)能夠?qū)崿F(xiàn)將字符串str進行URL編碼。
下面使用urlencode()函數(shù)對課酬查詢系統(tǒng)的“登錄”字符串進行URL編碼,代碼如下:
接收查詢字符串的值,并應(yīng)用urlencode()函數(shù)對查詢字符串進行編碼,代碼如下:
<?php echo urlencode($_GET[page]); ?> //對GET方法提交的字符串進行URL解碼。
2.2 crypt()函數(shù)加密技術(shù)
在WEB程序開發(fā)過程中,可以應(yīng)用PHP提供的crypt()函數(shù)來完成加密功能。crypt()函數(shù)是單向的加密函數(shù),無法解密。經(jīng)過加密的口令即使被非法獲取,由于不能被還原為明文,也不會影響網(wǎng)站的安全性。
crypt()函數(shù)的語法格式如下:
string crypt(string str, string [salt])
參數(shù)說明:
str:是需要加密的明文字符串。
Salt:是一個位字串,能夠影響加密的暗碼,進一步排除被破解的可能性。默認情況下,位字串的長度為2位。若不使用salt參數(shù),則程序會自動產(chǎn)生干擾串。
下面應(yīng)用crypt()加密函數(shù)對字符串進行加密,代碼如下:
<?php
$userpwd=”abc123”; //定義加密的密碼
$str=substr($userpwd, 0, 2); //計算位字串的數(shù)值
crypt($userpwd,$str); //使用crypt()函數(shù)進行加密
?>
2.3 base64編碼加密技術(shù)
PHP實現(xiàn)字符串的base64編碼通過base64_encoded()函數(shù)實現(xiàn)。該函數(shù)的語法格式如下:
string base64_encode(string data)
參數(shù)data指要進行base64編碼的數(shù)據(jù)。該函數(shù)的返回結(jié)果為字符串類型。
PHP實現(xiàn)對base64編碼的字符進行解碼,通過base4_decode()函數(shù)實現(xiàn)。該函數(shù)的語法格式如下:
string base64_ decode(string encoded_data)
參數(shù)encoded_data是指要進行base64解碼的字符串。
下面應(yīng)用base64編碼講解加密和解密的過程,代碼如下:
<?php
$userpwd=”abc123”; //定義加密的密碼
echo base64_encode($userpwd); //返回加密后的值
$userstr= base64_encode($userpwd);
//將加密后的字符賦給變量$userstr
echo base64_decode($userpwd);
//對加密的字符串進行解密
2.4 MD5加密技術(shù)
MD5是在Web應(yīng)用程序中最常用的密碼加密算法之一,它和crypt()函數(shù)一樣也是單項加密的。MD5廣泛用于數(shù)據(jù)加密技術(shù)上,在很多網(wǎng)站中,用戶的密碼是以MD5值的方式保存的,用戶登錄時,程序員把用戶輸入的密碼計算成MD5值,然后再去和數(shù)據(jù)庫中保存的MD5值進行比較,而程序本身并不“知道”用戶的密碼的真實值,從而提高了網(wǎng)站的安全性。
md5()函數(shù)用來計算字符串的MD5混合值。其語法如下:
String md5(string str);
<?php
$userpwd=”abc123”; //管理員密碼:abc123
$mdpwd=md5($userpwd);
//將管理員密碼通過md5()函數(shù)加密
?>
3 php數(shù)據(jù)加密技術(shù)的應(yīng)用
本人的課酬查詢系統(tǒng)的管理員登錄模塊就是采用md5()函數(shù)獲取字符串加密后的值。login.php是管理員登錄頁面,checkinput.php應(yīng)用md5()函數(shù)對用戶密碼進行加密,加密管理員密碼的部分代碼如下:
<?php
class chkinput{
var $name;
var $pwd;
function checkinput()
{
include("conn/conn.php");
$obj=new chkinput(trim($_POST[name]),md5(trim($_POST[pwd])));
$obj->checkinput();?>
login.php核心代碼如下:
function checkinput(form){
if(form.pwd.value==""){
alert("請輸入用戶密碼!");
form.pwd.select();
return(false);
}
}