php过滤特殊危险字符的总结
php过滤特殊危险字符的总结
一般,对于传进来的字符,php教程可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求比如这样
代码如下 复制代码
if (!get_magic_quotes_gpc()) {
add_slashes($_GET);
add_slashes($_POST);
add_slashes($_COOKIE);
}
function add_slashes($string) {
if (is_array($string)) {
foreach ($string as $key => $value) {
$string[$key] = add_slashes($value);
}
} else {
$string = addslashes($string);
}
return $string;
}
但是还可以更进一步进行重新编码,解码,如下:
代码如下 复制代码
//编码
function htmlencode($str) {
if(empty($str)) return;
if($str=="") return $str;
$str=trim($str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(chr(32)," ",$str);
$str=str_replace(chr(9)," ",$str);
$str=str_replace(chr(34),"&",$str);
$str=str_replace(chr(39),"'",$str);
$str=str_replace(chr(13),"
",$str);
$str=str_replace("'","''",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cast","cas",$str);
return $str;
}
这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:
代码如下 复制代码
//解码
function htmldecode($str) {
if(empty($str)) return;
if($str=="") return $str;
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace((www.111cn.net)"modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("
",chr(13),$str);
$str=str_replace("''","'",$str);
return $str;
}
虽然多了一步编码,解码的过程,但是安全方面,会更进一步,要如何做,自己取舍吧。
再附一些
代码如下 复制代码
function safe_replace($string) {
$string = str_replace(' ','',$string);
$string = str_replace(''','',$string);
$string = str_replace(''','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','"',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace(' $string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
return $string;
}
更全面的
代码如下 复制代码
//处理提交的数据
function htmldecode($str) {
if (empty ( $str ) || "" == $str) {
return "";
}
$str = strip_tags ( $str );
$str = htmlspecialchars ( $str );
$str = nl2br ( $str );
$str = str_replace ( "?", "", $str );
$str = str_replace ( "*", "", $str );
$str = str_replace ( "!", "", $str );
$str = str_replace ( "~", "", $str );
$str = str_replace ( "$", "", $str );
$str = str_replace ( "%", "", $str );
$str = str_replace ( "^", "", $str );
$str = str_replace ( "^", "", $str );
$str = str_replace ( "select", "", $str );
$str = str_replace ( "join", "", $str );
$str = str_replace ( "union", "", $str );
$str = str_replace ( "where", "", $str );
$str = str_replace ( "insert", "", $str );
$str = str_replace ( "delete", "", $str );
$str = str_replace ( "update", "", $str );
$str = str_replace ( "like", "", $str );
$str = str_replace ( "drop", "", $str );
$str = str_replace ( "create", "", $str );
$str = str_replace ( "modify", "", $str );
$str = str_replace ( "rename", "", $str );
$str = str_replace ( "alter", "", $str );
$str = str_replace ( "cast", "", $str );
$farr = array ("//s+/", //过滤多余的空白
"/]*?)>/isU", //过滤 <script> "/(<[^>]*)on[a-zA-Z]+/s*=([^>]*>)/isU" )//过滤javascript的on事件 <br> ; <br> $tarr = array (" ", "", //如果要直接清除不安全的标签,这里可以留空 <br> "" ); <br> return $str; <br> }<br> <br> from:http://www.111cn.net/phper/phpanqn/55876.htm </script>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用Java的Character.isDigit()函數判斷字元是否為數字字元在電腦內部以ASCII碼的形式表示,每個字元都有一個對應的ASCII碼。其中,數字字元0到9分別對應的ASCII碼值為48到57。要判斷一個字元是否為數字,可以使用Java中的Character類別提供的isDigit()方法來判斷。 isDigit()方法是Character類別的

如何使用自動更正在 Word 中鍵入箭頭在 Word 中鍵入箭頭的最快方法之一是使用預先定義的自動修正捷徑。如果您鍵入特定的字元序列,Word 會自動將這些字元轉換為箭頭符號。您可以使用此方法繪製多種不同的箭頭樣式。若要使用自動更正在 Word 中鍵入箭頭:將遊標移到文件中要顯示箭頭的位置。鍵入以下字元組合之一:如果您不希望將您鍵入的內容更正為箭頭符號,請按鍵盤上的退格鍵會將

您的實體或數位鍵盤在表面上提供有限數量的字元選項。但是,有幾種方法可以在iPhone、iPad和Mac上存取重音字母、特殊字元等。標準iOS鍵盤可讓您快速存取大寫和小寫字母、標準數字、標點符號和字元。當然,還有很多其他角色。您可以從帶有變音符號的字母到倒置的問號中進行選擇。您可能無意中發現了隱藏的特殊字元。如果沒有,以下是在iPhone、iPad和Mac上存取它們的方法。如何在iPhone和iPad上存取擴充字元在iPhone或iPad上取得擴充字元非常簡單。在「訊息」、「

在matplotlib中正確地顯示中文字符,是許多中文使用者常常遇到的問題。預設情況下,matplotlib使用的是英文字體,無法正確顯示中文字元。為了解決這個問題,我們需要設定正確的中文字體,並將其應用到matplotlib中。以下是一些具體的程式碼範例,幫助你正確地在matplotlib中顯示中文字元。首先,我們需要導入需要的函式庫:importmatplot

上標是一個字符或多個字符,可以是字母或數字,您需要將其設置為略高於正常文本行。例如,如果您需要寫1st,則字母st需要略高於字元1。同樣,下標是一組字符或單個字符,需要設置為略低於正常文本級別。例如,當你寫化學式時,你需要把數字放在正常字元行的下方。以下螢幕截圖顯示了上標和下標格式的一些範例。儘管這似乎是一項艱鉅的任務,但實際上將上標和下標格式應用於您的文字非常簡單。在本文中,我們將透過一些簡單的步驟說明如何輕鬆地使用上標或下標格式設定文字。希望你喜歡閱讀這篇文章。如何在 Excel 中套用上標

如何使用Golang判斷一個字元是否為字母在Golang中,判斷一個字元是否為字母可以透過使用Unicode包中的IsLetter函數來實現。 IsLetter函數會檢查給定的字元是否為字母。接下來,我們將詳細介紹如何使用Golang編寫程式碼來判斷一個字元是否為字母。首先,你需要建立一個新的Go文件,用於編寫程式碼。你可以將檔案命名為"main.go"。程式碼

Java中回車鍵的字元表示是`。在Java中,`表示換行符,當遇到這個字元時,文字輸出會換行。以下是一個簡單的程式碼範例,示範如何使用``來表示回車鍵:publicclassMain{publicstaticvoidmain(String[]args){System.out.println("這是第一行這

在平板電腦模式下啟用觸控鍵盤如果您有觸控螢幕筆記型電腦,則可以使用觸控鍵盤在Windows11上鍵入多個特殊字元。這可能是添加特殊字元最簡單的方法。在Windows11上啟用特殊字元的觸控螢幕:開啟開始功能表並選擇設定。當設定開啟時,導航到時間和語言>打字>觸摸鍵盤。在「鍵入」功能表中,勾選「沒有鍵盤時顯示觸控鍵盤」選項。啟用無平板電腦模式的觸控鍵盤存取觸控鍵盤的另一種方法是使其全時顯示在工作列上。要使觸控鍵盤可訪問,您需要告訴Windows11顯示它。使用以下步驟:在開始功能表中,選
