ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルでの特殊な危険文字のフィルタリングの概要

php_PHP チュートリアルでの特殊な危険文字のフィルタリングの概要

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

フォームを送信したり、Web サイト上の URL から値を取得したりするときに、セキュリティの問題が発生する可能性があります。以下に、危険な特殊文字をフィルタリングするためによく使用される解決策をいくつかまとめました。このチュートリアルが役立つことを願っています。

一般に、渡された文字については、PHP は addslashes 関数を使用して処理できます (get_magic_quotes_gpc() のみが false です。そうでない場合は繰り返しエスケープされます!)。これにより、ある程度のセキュリティ要件を達成できます
こんな感じ

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

if (!get_magic_quotes_gpc()) {
add_slashes($_GET);
add_slashes($_POST);
add_slashes($_COOKIE);
}

関数 add_slashes($string) {
If (is_array($string)) {
foreach ($string as $key => $value) {
$string[$key] = add_slashes($value);                                                                       } それ以外 { $string = まつげを追加します($string);                                                                  $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("<","&lt;",$str);
      $str=str_replace(chr(32),"&nbsp;",$str);
      $str=str_replace(chr(9),"&nbsp;",$str);
      $str=str_replace(chr(34),"&",$str);
      $str=str_replace(chr(39),"&#39;",$str);
      $str=str_replace(chr(13),"<br />",$str);
      $str=str_replace("'","''",$str);
      $str=str_replace("select","sel&#101;ct",$str);
      $str=str_replace("join","jo&#105;n",$str);
      $str=str_replace("union","un&#105;on",$str);
      $str=str_replace("where","wh&#101;re",$str);
      $str=str_replace("insert","ins&#101;rt",$str);
      $str=str_replace("delete","del&#101;te",$str);
      $str=str_replace("update","up&#100;ate",$str);
      $str=str_replace("like","lik&#101;",$str);
      $str=str_replace("drop","dro&#112;",$str);
      $str=str_replace("create","cr&#101;ate",$str);
      $str=str_replace("modify","mod&#105;fy",$str);
      $str=str_replace("rename","ren&#097;me",$str);
      $str=str_replace("alter","alt&#101;r",$str);
      $str=str_replace("cast","ca&#115;",$str);      
      return $str; 
}

这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:

 代码如下 复制代码

//解码

function htmldecode($str) {     
      if(empty($str)) return;
      if($str=="")  return $str;
      $str=str_replace("sel&#101;ct","select",$str);
      $str=str_replace("jo&#105;n","join",$str);
      $str=str_replace("un&#105;on","union",$str);
      $str=str_replace("wh&#101;re","where",$str);
      $str=str_replace("ins&#101;rt","insert",$str);
      $str=str_replace("del&#101;te","delete",$str);
      $str=str_replace("up&#100;ate","update",$str);
      $str=str_replace("lik&#101;","like",$str);
      $str=str_replace("dro&#112;","drop",$str);
      $str=str_replace("cr&#101;ate","create",$str);
      $str=str_replace("mod&#105;fy","modify",$str);
      $str=str_replace("ren&#097;me","rename",$str);
      $str=str_replace("alt&#101;r","alter",$str);
      $str=str_replace("ca&#115;","cast",$str);
      $str=str_replace("&amp;","&",$str);
      $str=str_replace("&gt;",">",$str);
      $str=str_replace("&lt;","<",$str);
      $str=str_replace("&nbsp;",chr(32),$str);
      $str=str_replace("&nbsp;",chr(9),$str);
      $str=str_replace("&",chr(34),$str);
      $str=str_replace("&#39;",chr(39),$str);
      $str=str_replace("<br />",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);
$string = str_replace('>','>',$string);
 $string = str_replace("{",'',$string);
 $string = str_replace('}','',$string);
 return $string;
}

さらに万能

以下のコード コードをコピーします

// 送信されたデータを処理します
関数 htmldecode($str) {
 if (空 ( $str ) || "" == $str) {
 戻る "";
 }
 
 $str = ストリップタグ ( $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 ( "結合", "", $str );
 $str = str_replace ( "union", "", $str );
 $str = str_replace ( "どこ", "", $str );
 $str = str_replace ( "挿​​入", "", $str );
 $str = str_replace ( "削除", "", $str );
 $str = str_replace ( "更新", "", $str );
 $str = str_replace ( "like", "", $str );
 $str = str_replace ( "ドロップ", "", $str );
 $str = str_replace ( "作成", "", $str );
 $str = str_replace ( "変更", "", $str );
 $str = str_replace ( "名前変更", "", $str );
 $str = str_replace ( "alter", "", $str );
 $str = str_replace ( "キャスト", "", $str );
 
 $farr = array ("//s+/", // 空白をフィルタリングします
"/ ;
 $tarr = array (" ", "", // 安全でないタグを直接クリアしたい場合は、ここでそれらを保持できます
"");
 $str を返します。
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632822.html技術記事在网站中表十官方或url方法值我们都性了的劇情主讲述,电影我介绍名开会结果手机的劇情主讲述的电影的方法的方法,最好最最术对向...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。