ホームページ >バックエンド開発 >PHPチュートリアル >PHP はすべての悪意のある文字をフィルターします (投稿のバッチ フィルター、機密データの取得)_PHP チュートリアル

PHP はすべての悪意のある文字をフィルターします (投稿のバッチ フィルター、機密データの取得)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:35:341135ブラウズ

関数コード:

コードをコピー コードは次のとおりです:

//php批判量过滤post,get敏感なデータ
if (get_magic_quotes_gpc()) {
$_GET =tripslashes_array($_GET);
$_POST = ストリップスラッシュ_配列($_POST);
}
functionstripslashes_array(&$array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' && $key != 'argv' && ( strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = ストリップスラッシュ($var) );
}
if (is_array($var)) {
$array[$key] =tripslashes_array($var);
}
}
}
return $array;
}
//过滤
function htmlencode($str){
if(empty($str)) return;
if($str=="") $str; を返します。
$str=トリム($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(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("選択","選択",$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("いいね","いいね",$str);
$str=str_replace("ドロップ","ドロップ",$str);
$str=str_replace("作成","作成",$str);
$str=str_replace("変更","変更",$str);
$str=str_replace("名前変更","名前変更",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("キャスト","cas",$str);
$str; を返します。
}
//解読
function htmldecode($str){
if(empty($str)) return;
if($str=="") $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("ドロップ","ドロップ",$str);
$str=str_replace("作成","作成",$str);
$str=str_replace("変更","変更",$str);
$str=str_replace("名前変更","名前変更",$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(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; を返します。
}
// 関数:string_filter($string, $match_type=1)
// 機能:过滤非法内容
// パラメータ:
// $string 必要检查的文字列
// $match_type 適合型,1精确適合、2 は模糊適合、默认は 1
//
// 戻り値:有非法内容返還True、無非法内容返報False
// その他:非法关键字列表保存在txt文件里、分別普通非法关键字和严重非法关键字两个列表
// 作者:heiyeluren
// 日時:2006-1-18
//
//=================== ================================================= =
function lib_lawless_string_filter($string, $match_type=1)
{
//文字串空直接非法に戻ります
$string = トリム($string);
if (empty($string))
{
return false;
}
//获取重要关键字列表と普通关键字列表
$common_file = "common_list.txt"; //汎用过滤关键字列表
$signify_file = "signify_list.txt"; //重要过滤关键字列表
//結果の任意の列表文件が存在しない場合は直接 false を返し、そうでない場合は 2 つの文件列表を 2 つの数グループに取り込みます
if (!file_exists($common_file) || !file_exists($signify_file) )
{
false を返します。
}
$common_list = ファイル($common_file);
$signify_list = ファイル($signify_file);
//精确適合
if ($match_type == 1)
{
$is_lawless = strict_match($string, $common_list);
}
//模糊適合
if ($match_type == 2)
{
$is_lawless = Blur_match($string, $common_list, $signify_list);
}
// 判断結果数グループ中にデータがあるかどうか、結果があれば、证明必須
if (is_array($is_lawless) && !empty($is_lawless))
{
return true;
}
else
{
return false;
}
}
//---------------
//完全一致、フィルタリングサービス用
//--------- ------ -------
関数 strict_match($string, $common_list)
{
$string = トリム($string);
$string = lib_replace_end_tag($string);
//共通フィルターキーワードリストを取得します
foreach ($common_list as $block)
{
$block =rim($block)
if (preg_match("/^$string$/i", $block))
{
$blist[] = $block;
}
}
//配列内にフィルタリングされたコンテンツがあるかどうかを判断する
if (!empty($blist))
{
return array_unique($blist) ;
}
return false;
}
//----- ------------------
// あいまいマッチング、サービングフィルタリング
//---- ---------------------- -
関数 Blur_match($string, $common_list, $signify_list)
{
$string = トリム($string); s_len = strlen($string);
$string = lib_replace_end_tag($string);
//共通フィルターキーワードリストの取得
foreach($common_list as $block)
{
$block =trim($block); preg_match("/^$string$/i", $block))
{
$blist [] = $block;
}
}
//厳密にフィルタリングされたキーワードリストを取得します
foreach($signify_list as $block)
{
$block = トリム($block);
if ($s_len>=strlen($ block) && preg_match("/$block/i", $string))
{
$blist[] = $block; }
}
//配列内にフィルタリングされたコンテンツがあるかどうかを判断します
if (!empty($blist))
{
return array_unique($blist);
}
return
}
//---- ----------------------
//フィルタリングを提供するために HTML 終了タグを置き換えます
//--------------- -----------
関数 lib_replace_end_tag($str)
{
if (empty($str)) は false を返します
$str = htmlspecialchars($str);
$str = str_replace( '/ ', "", $str);
$str = str_replace("\", "" , $str);
$str = str_replace("> "<", "", $str);
$str = str_replace("", "", $str); "選択","選択",$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("名前の変更) ","名前変更",$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_replace("
",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str) );
$str=str_replace("CSS","'",$str);
return $str;
//HTML タグ、拡張子としてフィルタリング可能
/*
$tags = array("/html", "/head"、"/body"、"/div"、"/span"、"/ DOCTYPE"、"/title"、"/link"、"/meta"、"/style"、"/p"、 「/h1,」、「/h2,」、「/h3,」、「/h4,」、「/h5,」、「/h6」、「/strong」、「/em」、「/abbr」、 "/acronym"、"/address"、"/bdo"、"/blockquote"、"/cite"、"/q"、"/code"、"/ins"、"/del"、"/dfn"、 「/kbd」、「/pre」、「/samp」、「/var」、「/br」、「/a」、「/img」、「/area」、「/map」、「/object」、 "/param"、"/ul"、"/ol"、"/li"、"/dl"、"/dt"、"/dd"、"/table"、"/tr"、"/td"、 "/th"、"/tbody"、"/thead"、"/tfoot"、"/col"、"/colgroup"、"/caption"、"/form"、"/input"、"/textarea"、 "/select"、"/option"、"/optgroup"、"/button"、"/ label"、"/fieldset"、"/legend"、"/script"、"/noscript"、"/b"、 "/i"、"/tt"、"/sub"、"/sup"、"/ big"、"/small"、"/hr" );
コード:

引用は直接次のようになります:



コードをコピーします

コードは次のとおりです:


$xxx = htmlspecialchars($_POST['xxx']);

or

コード

コードは次のとおりです: $xxx = htmlspecialchars($_GET['xxx']);



http://www.bkjia.com/PHPjc/743146.html
www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/743146.html
技術記事

関数コード: 次のようにコードをコピーします。 //php バッチ フィルター post, get 機密データ if (get_magic_quotes_gpc()) { $_GET =tripslashes_array($_GET) $_POST =tripslashes_array($_POS...

)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。