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