English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このPHPのフィルタリング入力操作htmlentitiesとhtmlspecialcharsの用法の例を説明します。皆様にご参考に供えます。以下の通りです:
入力をフィルタリングすること(つまり、リストに記載されているデータソースからのすべてのデータ)とは、不安全な文字をエスケープまたは削除することです。データがアプリケーションのストレージレイヤーに到達する前に、必ず入力データをフィルタリングしてください。これは最初の防衛線です。ウェブサイトのコメントフォームがHTMLを受け入れる場合、デフォルトでは、訪問者は無制限に悪意のある<script>タグをコメントに含めることができます。以下のように表示されます:
<p> 私のテスト </p> <script>alert(123)</script>
上記の例では、このコメントをフィルタリングしないと、悪意のあるコードがデータベースに保存され、その後、ウェブサイトのタグでレンダリングされます。
HTML
htmlentitiesまたはhtmlspecialchars関数を使用してHTMLをフィルタリングし、特殊文字を対応するHTMLエンティティに変換することができます。
htmlentities関数は、対応する「htmlエンティティ」を持つすべての特殊文字を変換します。例えば、ユーロやポンドなどの通貨記号、著作権記号など、htmlspecialcharsは特定の特殊文字のみをエスケープします。& " ' < >
これは2この関数は非常に愚かで、デフォルトでは単引号をエスケープしません
$str='<a href="test.html" rel="external nofollow" >\'テストページ\'</a><script>alert(213)</script>'; //単引号はエスケープされていません echo $str; echo "<hr/>".PHP_EOL; echo htmlentities($str); echo "<hr/>".PHP_EOL; echo htmlspecialchars($str);
設定する必要があります第2個パラメータENT_QUOTES,詳細はphpマニュアルを参照してください
echo htmlentities($str,ENT_QUOTES,'UTF-8');-8'); //シングルクォートもエスケープされます echo "<hr/>".PHP_EOL; echo htmlspecialchars($str,ENT_QUOTES,'UTF-8');//シングルクォートもエスケープされます
上記の例では、htmlentitiesとhtmlspecialcharsの違いを区別することができません。特殊な文字、例えばユーロなどを使用して、htmlentitiesはこれらをエスケープしますが、htmlspecialcharsはしません。
echo htmlentities(' <>"').PHP_EOL; echo "<hr/>".PHP_EOL; echo htmlspecialchars(' <>"').PHP_EOL; //エスケープされていません
結論:一般的なフォームの送信時にstrip_tagsを使用してHTMLタグを除去することができます。富テキストエディタに関連する場合は、htmlspecialcharsを使用して送信データをフィルタリングすることができます。
PHPに関連する内容に興味を持つ読者は、本サイトの特集を参照してください:《PHPプログラム設計セキュリティ教程》、《PHPセキュリティフィルタリング技術総括》、《PHP演算および演算子の用法総括》、《PHPネットワークプログラミング技術総括》、《PHP基本文法入門教程》、《PHPオブジェクト指向プログラム設計入門教程》、《PHP文字列(string)の用法総括》、《PHP+mysql データベース操作入門教程およびphp 常見データベース操作技術総覧
本稿の内容が皆様のPHPプログラム設計に役立つことを願っています。
声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされています。本サイトは所有権を有しておらず、人工編集は行われていません。著作権侵害を疑われる内容が見つかりましたら、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際は、#を@に置き換えてください。通報を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害を疑われるコンテンツを削除します。)