我來(lái)解釋一下吧
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),云巖企業(yè)網(wǎng)站建設(shè),云巖品牌網(wǎng)站建設(shè),網(wǎng)站定制,云巖網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,云巖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范圍,比如\x00-\x08指的是ASCII代碼在\x00到\x08范圍的字符,\x0A和\x0D代表回車換行,所以沒包含在這個(gè)里面,否則直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字符,通常作為字符串結(jié)束標(biāo)志
$string = preg_replace("/(?!(#[0-9]+|[a-z]+);)/si",'',$string);
我們知道HTML里面可以用xx;來(lái)對(duì)一些字符進(jìn)行編碼,比如 (空格), ? Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ?類似的 HTML編碼字符,去掉其他的問題字符,比如 123; nbsp;
str_replace(array("%3C",''),'',$string);
第一個(gè)''多余吧,%3C是編碼以后的 , 一般用在URL編碼里
str_replace(array("%3E",''),'',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略過
有問題再追問
可以采用以下幾點(diǎn)措施。
(1)在用戶數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)之前使用addslashes()函數(shù)過濾,可以進(jìn)行一些字符的轉(zhuǎn)義,并過濾掉可能引起數(shù)據(jù)庫(kù)問題的字符??梢允褂胹tripslashes()將數(shù)據(jù)返回到原始形式。
(2)在php.infi中開啟magic_quotes_gpc和magic_quotes_runtime指令。它們可以自動(dòng)的添加和過濾斜杠,前者主要用于格式化GET,POST,和cookie變量,后者用于過濾進(jìn)出數(shù)據(jù)庫(kù)的數(shù)據(jù)。
(3)當(dāng)在system()或者exex()函數(shù)中使用用戶輸入數(shù)據(jù)作為參數(shù)時(shí),必須使用escapeshellcmd()。用來(lái)避免懷有惡意的用戶強(qiáng)迫系統(tǒng)運(yùn)行某些命令。
(4)可以使用stip_tags()從一個(gè)字符串中去掉HTML和PHP標(biāo)記,這樣可以避免用戶將惡意節(jié)本植入到用戶的數(shù)據(jù)中。
(5)可以使用htmlspecialchars(),可以將字符專程它們的HTML等價(jià)實(shí)體。例如,將被轉(zhuǎn)換成lt; ,該函數(shù)可以將任何腳本轉(zhuǎn)換成無(wú)害的字符。
總之,在使用用戶的數(shù)據(jù)時(shí),一定要小心,原則即是不要相信用戶輸入的任何數(shù)據(jù),必須要進(jìn)行過濾和轉(zhuǎn)換。
調(diào)度方法
這種方法是用一個(gè)單一的 php 腳本調(diào)度(通過 URL)。其他任何操作在必要的時(shí)候使用include或require包含進(jìn)來(lái)。這種方法一般需要每個(gè) URL 都傳遞一個(gè)單獨(dú)的GET變量用于調(diào)度。這個(gè)GET變量可以被認(rèn)為是用來(lái)替代腳本名稱的更加簡(jiǎn)化的設(shè)計(jì)。