ホームページ  >  記事  >  バックエンド開発  >  php mysqlエスケープ関数とは何ですか?

php mysqlエスケープ関数とは何ですか?

藏色散人
藏色散人オリジナル
2021-09-16 09:53:022798ブラウズ

php mysql エスケープ関数には、1.addlashes 関数、2.htmlspecialchars 関数、3.htmlentities 関数、4.mysql_real_escape_string 関数などが含まれます。

php mysqlエスケープ関数とは何ですか?

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、Dell G3 コンピューター

php mysqlエスケープ関数とは何ですか?

php mysql エスケープ関数

SQL クエリ ガジェットを開発しているとき、データをクエリする SQL ステートメントを送信するときに POST が発生しました。端末が 70ff1cb36f39223d986b5721b01e56ee を含む SQL ステートメントを受信すると、構文エラーが報告されます。

しかし、提出された明細書を印刷すれば問題ありません。考えてみてください。それはエンコードまたはエスケープの問題に違いありません。

$sqlQuery = html_entity_decode($_POST["content"]);
$sqlQuery = stripslashes($sqlQuery);[object Object]

以下では、主に PHP でよく使われるエスケープ関数とセキュリティ関数を紹介します。これらの関数を使用すると、SQL インジェクションなどの最も一般的な攻撃手法をフィルタリングできます。必要な友人は参照してください

# 1.addlashes addlashes は、(')、(")、()、(NUL) などの SQL ステートメント内の特殊文字をエスケープします。この関数は、DBMS に独自のエスケープ関数がない場合に使用されますが、DBMS に独自のエスケープ関数がある場合は、関数を使用する場合は、元の関数を使用することをお勧めします。たとえば、MySQL には SQL をエスケープするための mysql_real_escape_string 関数があります。PHP5.3 より前では、magic_quotes_gpc は主に $GET、$POST、$ でデフォルトで有効になっていたことに注意してください。 COOKIE では、これらの変数に対して addslashes を繰り返し呼び出す必要はありません。そうしないと二重エスケープが発生します。ただし、magic_quotes_gpc は PHP5.3 で廃止され、PHP5.4 以降は削除されました。最新の PHP を使用する場合は、必要ありません。この問題について心配する必要はありません。Stripslashes は、addslashes のエスケープ解除機能です。

2. htmlspecialchars htmlspecialchars は、(&)、(' を含む HTML 内のいくつかの特殊文字を HTML エンティティ (形式: &xxxx;) 形式にエスケープします。 )、(")、()の5文字。

& (AND) => &
” (双引号) => " (当ENT_NOQUOTES没有设置的时候)
‘ (单引号) => ' (当ENT_QUOTES设置)
< (小于号) => <
> (大于号) => >

htmlspecialchars を使用して $GET、$POST、$COOKIE データをフィルタリングし、XSS を防ぐことができます。なお、htmlspecialchars関数はセキュリティ上のリスクがあると考えられるHTML文字のみをエスケープするため、HTML内でエスケープ可能な文字をすべてエスケープしたい場合はhtmlentitiesを使用してください。 htmlspecialchars_decode は htmlspecialchars のデコード関数です。

3. htmlentities

htmlentities は、HTML 内のエスケープ可能なコンテンツを HTML エンティティにエスケープします。 html_entity_decode は htmlentities のデコード関数です。

4. mysql_real_escape_string

mysql_real_escape_string は、(\x00)、(\n)、(\r)、()、(')、(\x1a に対して) MySQL ライブラリ関数 mysql_real_escape_string を呼び出します。 ) をエスケープします。つまり、SQL インジェクションを防ぐために前にバックスラッシュ () を追加します。データベース データを読み取るときにエスケープを解除するためにストリップスラッシュを呼び出す必要はないことに注意してください。これらのバックスラッシュはデータベースが SQL を実行するときに追加され、バックスラッシュはデータがデータベースに書き込まれるときに削除されるためです。は元のデータであり、前にバックスラッシュはありません。

5.strip_tagsstrip_tags は、NUL、HTML、および PHP タグを除外します。

6.stripslashes()

この関数は、addslashes() 関数によって追加されたバックスラッシュを削除します。

7. 結論 PHP の組み込みセキュリティ機能では XSS を完全に回避することはできません。HTML Purifier の使用を推奨します。

推奨学習: 「

PHP ビデオ チュートリアル

以上がphp mysqlエスケープ関数とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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