mysql_real_escape_string
データベースへの挿入時に使用
htmlentities()
Webページにデータを出力するときに使用
htmlspecialchars()
いつ使用?
strip_tags()
いつ使用?
addslashes()
いつ使用?
htmlspecialchars() はいつ使用されますか?
htmlspecialchars
とほぼ同じhtmlentities
です。違い: 文字エンコーディング。
両方とも、タグなどを開くために使用される 、 など<
の制御文字をエンコードします。また、ウムラウト、ユーロ記号などの他の言語からの文字もエンコードします。Web サイトが UTF の場合は を使用し、それ以外の場合は を使用します。>
&
htmlentities
htmlspecialchars()
htmlentities()
strip_tags() はいつ使用されますか?
htmlspecialchars
/entities
特殊文字をエンコードして、表示されますが解釈されないようにします。strip_tags
それらを削除します。
実際には、何をする必要があるかによって異なります。
例: フォーラムをコーディングし、ユーザーが投稿できるようにテキスト フィールドを提供します。悪意のある人は次のことを試みます。
pictures of <a href="javascript:void(window.setInterval(function () {window.open('http://evil.com');}, 1000));">kittens</a> here
何もしなければ、リンクが表示され、そのリンクをクリックした被害者に多数のポップアップが表示されます。
出力に htmlentity/htmlspecialchar を指定すると、テキストはそのまま表示されます。それを strip_tag すると、単にタグが削除されて表示されます。
pictures of kittens here
混合が必要な場合があります。たとえば、 <b>
(strip_tags
特定のタグをそこに残すことができます) のように、そこにいくつかのタグを残します。これも安全ではないため、XSS に対して本格的なライブラリを使用することをお勧めします。
追加スラッシュ
古いバージョンの PHP マニュアルを引用するには:
データベース クエリなどで引用する必要がある文字の前にバックスラッシュを付けた文字列を返します。これらの文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NUL ( NULLバイト) です。
addslashes()の使用例は、データベースにデータを入力する場合です。たとえば、O'reillyという名前をデータベースに挿入するには、エスケープする必要があります。DBMS 固有のエスケープ関数 (MySQL の場合は mysqli_real_escape_string()、PostgreSQL の場合は pg_escape_string() など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、DBMS が \ を使用して特殊文字をエスケープする場合は、この機能を使用できます。
現在のバージョンでは、表現が異なります。