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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









文字が数字かどうかを判断するには、Java の Character.isDigit() 関数を使用します。文字はコンピュータ内部で ASCII コードの形式で表されます。各文字には対応する ASCII コードがあります。このうち、0~9の数字に対応するASCIIコードの値は、それぞれ48~57となります。文字が数値かどうかを判断するには、Java の Character クラスによって提供される isDigit() メソッドを使用できます。 isDigit() メソッドは Character クラスに属します

オートコレクトを使用して Word で矢印を入力する方法 Word で矢印を入力する最も速い方法の 1 つは、定義済みのオートコレクト ショートカットを使用することです。特定の一連の文字を入力すると、Word はそれらの文字を矢印記号に自動的に変換します。この方法を使用すると、さまざまな矢印スタイルを描画できます。 Word でオートコレクトを使用して矢印を入力するには: 矢印を表示する文書内の位置にカーソルを移動します。次の文字の組み合わせのいずれかを入力します。 入力した文字を矢印記号に修正したくない場合は、キーボードのバックスペース キーを押してください。

上付き文字は、通常のテキスト行の少し上に設定する必要がある、文字または数字の 1 つまたは複数の文字です。たとえば、1st と書く必要がある場合、st の文字は 1 の文字より少し高い位置にある必要があります。同様に、下付き文字は文字のグループまたは単一の文字であり、通常のテキスト レベルよりわずかに低く設定する必要があります。たとえば、化学式を書くときは、通常の文字行の下に数字を配置する必要があります。次のスクリーンショットは、上付き文字と下付き文字の書式設定の例をいくつか示しています。難しい作業のように思えるかもしれませんが、テキストに上付き文字と下付き文字の書式を適用するのは実際には非常に簡単です。この記事では、上付き文字または下付き文字を使用してテキストを簡単に書式設定する方法をいくつかの簡単な手順で説明します。この記事を楽しんで読んでいただければ幸いです。 Excelで上付き文字を適用する方法

物理キーボードまたは数字キーボードでは、表面上に提供される文字オプションの数が限られています。ただし、iPhone、iPad、Mac ではアクセント付き文字や特殊文字などにアクセスする方法がいくつかあります。標準の iOS キーボードを使用すると、大文字、小文字、標準の数字、句読点、文字にすばやくアクセスできます。もちろん他にもたくさんのキャラクターがいます。発音記号を含む文字から逆さまの疑問符まで選択できます。隠れた特殊文字を見つけてしまったかもしれません。そうでない場合は、iPhone、iPad、Mac でアクセスする方法を次に示します。 iPhone および iPad で拡張文字にアクセスする方法 iPhone または iPad で拡張文字を取得するのは非常に簡単です。 「お知らせ」には「

matplotlib で中国語の文字を正しく表示することは、多くの中国人ユーザーがよく遭遇する問題です。デフォルトでは、matplotlib は英語フォントを使用するため、中国語の文字を正しく表示できません。この問題を解決するには、正しい中国語フォントを設定し、それを matplotlib に適用する必要があります。以下は、matplotlib で中国語の文字を正しく表示するのに役立ついくつかの具体的なコード例です。まず、必要なライブラリをインポートする必要があります: importmatplot

Golang を使用して文字が文字であるかどうかを判断する方法 Golang では、Unicode パッケージの IsLetter 関数を使用して、文字が文字であるかどうかを判断できます。 IsLetter 関数は、指定された文字が文字であるかどうかを確認します。次に、Golangを使って文字かどうかを判定するコードを書く方法を詳しく紹介します。まず、コードを記述する新しい Go ファイルを作成する必要があります。ファイルに「main.go」という名前を付けることができます。コード

Java における Enter キーの文字表現は ` です。 Java では、` は改行文字を表し、この文字が出現するとテキスト出力が折り返されます。以下は、`` を使用して Enter キーを表す方法を示す簡単なコード例です。 publicclassMain{publicstaticvoidmain(String[]args){System.out.println("これは、この最初の行です。

タブレット モードでタッチ キーボードを有効にする タッチ スクリーンのラップトップをお持ちの場合は、Windows 11 でタッチ キーボードを使用して複数の特殊文字を入力できます。おそらくこれが特殊文字を追加する最も簡単な方法です。 Windows 11 でタッチスクリーンの特殊文字を有効にする: [スタート] メニューを開き、[設定] を選択します。 [設定] が開いたら、[時刻と言語] > [入力] > [タッチ キーボード] に移動します。 [入力] メニューで、[キーボードが使用できない場合はタッチ キーボードを表示する] オプションをオンにします。タブレット モードなしでタッチ キーボードを有効にする タッチ キーボードにアクセスするもう 1 つの方法は、タッチ キーボードをタスク バーにフルタイムで表示することです。タッチ キーボードにアクセスできるようにするには、Windows 11 にタッチ キーボードを表示するように指示する必要があります。次の手順を実行します。 [スタート] メニューから、
