ホームページ >バックエンド開発 >PHPチュートリアル >不正な文字のフィルタリング_PHP チュートリアル
不正な文字のフィルタリングこの記事では主にphpの不正な文字のフィルタリングについて説明しますASPの不正な文字をフィルタリングする機能については説明しませんが、考え方は同じです
) MySQL の通常の動作に影響を与える文字をフィルターします。
ユーザーが入力した内容 (一重引用符、二重引用符、バックスラッシュ、ヌル文字 NUL が含まれる場合があります) を mysql ステートメントに置き換えて実行する必要がある場合は、APACHE の magic_quotes_gpc 項目を On に設定する必要があります。
APACHE のこの項目が Off に設定されている場合、PHP 関数 addlashes() を使用して同じ目的を達成することもできますが、これら 2 つのメソッドを同時に使用することはできません。そうしないと、置換とエラーが繰り返されます。
サンプル:
PHPコード
if (get_magic_quotes_gpc()) {
$content=$_POST["コンテンツ"]
} その他 {
$content=addslashes($_POST["コンテンツ"]);
}
?>
を削除できます。
2) MSSQL の通常の動作に影響を与える文字をフィルターします。ユーザーが入力した内容 (一重引用符が含まれる場合があります) を mssql ステートメントに置き換えて実行する必要がある場合は、APACHE の magic_quotes_sybase 項目を On に設定する必要があります。この時点では、magic_quotes_gpc 項目は有効になりません。
APACHE のこの項目が Off に設定されている場合、PHP には同じ目的を達成するための適切な関数がありません。この目的を達成するには文字列置換関数を使用するしかありません。
サンプル:
PHPコード
$content=str_replace("'","''"$_POST["コンテンツ"]);
?>
2. SQL ステートメントを含むユーザー入力に対処するための措置。
次の 2 つの SQL 記述方法は比較的一般的ですが、ユーザーが $id='1 および 1=2 Union select...' を送信すると、最初の方法では表示すべきでないデータが表示されます。 2 番目のタイプは比較的安全です。
SQLコード
* 記事から選択します (記事 ID=$id の場合)
* 記事から選択します (記事 ID='$id' の場合)
htmlspecialchars() を使用して & " > をフィルタリングできます
PHPコード
$content = htmlspecialchars($content);
4. ページに表示されるコンテンツにキャリッジ リターンとライン フィードが含まれている場合、nl2br() を使用してページ上で改行の効果を得ることができます。
function chkstr($paravalue,$paratype) //不正な文字をフィルタリングします
{
if($paratype==1)
{
$inputstr=str_replace("'","''",$paravalue);
}
elseif($paratype==2)
{
$inputstr=str_replace("'","",$paravalue);
}
$inputstr;
を返します
}
$user1=chkstr($_GET["ユーザー"],1);
$user2=chkstr($_GET["ユーザー"],2);
//$user=$_GET["ユーザー"];
print "方法 1----------------
";
print "$user1
";
print "方法 2-----------------
";
print "$user2
";
?>
方法 2.