ホームページ  >  記事  >  バックエンド開発  >  SQL インジェクションを防ぐための PHP フィルター HTML 文字列のサンプル コード_PHP チュートリアル

SQL インジェクションを防ぐための PHP フィルター HTML 文字列のサンプル コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:53:44948ブラウズ

php は、HTML 文字列をフィルタリングして SQL インジェクションを防ぎ、関数を使用してデータベースに書き込まれる文字列を処理し、違法な情報と悪意のある HTML コードをフィルタリングします。

コード:

//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] =tripslashes($ 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))
{
return false
}
$common_list = file($common_file); 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))
{
true を返す
}
else
{
false を返す
}
}

//---------------- - ---
//フィルタリング用の完全一致
//---------------------
function strict_match($string, $common_list)
{
$ string =rim($string);
$string = lib_replace_end_tag($string);

//共通フィルターキーワードリストを取得します
foreach($common_list as $block)
{
$block =trim($block); if (preg_match("/^$string$/i", $block))
{
$blist[] = $block;
}
}
//配列にフィルタリングされたコンテンツがあるかどうかを判断します
if (!empty ( $blist))
{
return array_unique($blist);
}

return false;
// ファジーマッチング、フィルタリングの提供
//----------------------
function Blur_match($string, $common_list, $signify_list)
{
$ string =rim($string);
$s_len = strlen($string);
$string = lib_replace_end_tag($string);

//共通フィルターキーワードリストを取得します
foreach($common_list as $block) $block = trim($block);
if (preg_match("/^$string$/i", $block))
{
$blist[] = $block
}
}
//厳しいフィルタリングキーを取得する単語リスト
foreach($signify_list as $block)
{
$block = trim($block)
if ($s_len>=strlen($block) && preg_match("/$block/i", $string);
{
$blist[] = $block;
}
}
//配列にフィルターされたコンテンツがあるかどうかを判断します
if (!empty($blist))
{
return array_unique($blist);
return false;
}

//--------------------------
// フィルタリングを提供するために 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("<SCRIPT>", "", $str); <br />$str = str_replace( "</SCRIPT>", "", $str);
$str = str_replace("<script>", "", $str); <br>$str = str_replace("</script>" , " ", $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("rename","re​​name",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas ", "キャスト",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$ str= str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str); $str );
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&") ,chr (39),$str);
$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」、 "/頭字語"​​、"/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']);

または

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




http://www.bkjia.com/PHPjc/364771.html

www.bkjia.com

http://www.bkjia.com/PHPjc/364771.html技術記事 PHP は HTML 文字列をフィルタリングして SQL インジェクションを防止し、関数を使用してデータベースに書き込まれる文字列を処理し、違法な情報や悪意のある HTML コードを除外します。 コード: //php バッチ フィルター p...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。