可以采用以下幾點措施。
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。
(1)在用戶數(shù)據(jù)進入數(shù)據(jù)庫之前使用addslashes()函數(shù)過濾,可以進行一些字符的轉(zhuǎn)義,并過濾掉可能引起數(shù)據(jù)庫問題的字符。可以使用stripslashes()將數(shù)據(jù)返回到原始形式。
(2)在php.infi中開啟magic_quotes_gpc和magic_quotes_runtime指令。它們可以自動的添加和過濾斜杠,前者主要用于格式化GET,POST,和cookie變量,后者用于過濾進出數(shù)據(jù)庫的數(shù)據(jù)。
(3)當在system()或者exex()函數(shù)中使用用戶輸入數(shù)據(jù)作為參數(shù)時,必須使用escapeshellcmd()。用來避免懷有惡意的用戶強迫系統(tǒng)運行某些命令。
(4)可以使用stip_tags()從一個字符串中去掉HTML和PHP標記,這樣可以避免用戶將惡意節(jié)本植入到用戶的數(shù)據(jù)中。
(5)可以使用htmlspecialchars(),可以將字符專程它們的HTML等價實體。例如,將被轉(zhuǎn)換成lt; ,該函數(shù)可以將任何腳本轉(zhuǎn)換成無害的字符。
總之,在使用用戶的數(shù)據(jù)時,一定要小心,原則即是不要相信用戶輸入的任何數(shù)據(jù),必須要進行過濾和轉(zhuǎn)換。
調(diào)度方法
這種方法是用一個單一的 php 腳本調(diào)度(通過 URL)。其他任何操作在必要的時候使用include或require包含進來。這種方法一般需要每個 URL 都傳遞一個單獨的GET變量用于調(diào)度。這個GET變量可以被認為是用來替代腳本名稱的更加簡化的設(shè)計。
我來解釋一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范圍,比如\x00-\x08指的是ASCII代碼在\x00到\x08范圍的字符,\x0A和\x0D代表回車換行,所以沒包含在這個里面,否則直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字符,通常作為字符串結(jié)束標志
$string = preg_replace("/(?!(#[0-9]+|[a-z]+);)/si",'',$string);
我們知道HTML里面可以用xx;來對一些字符進行編碼,比如 (空格), ? Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ?類似的 HTML編碼字符,去掉其他的問題字符,比如 123; nbsp;
str_replace(array("%3C",''),'',$string);
第一個''多余吧,%3C是編碼以后的 , 一般用在URL編碼里
str_replace(array("%3E",''),'',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略過
有問題再追問