1. ユーザーがログインしたりデータをクエリしたりするときに、SQL ステートメントに影響を与える引用符やその他の記号が含まれる場合があります (SQL インジェクション攻撃)。これは、データベース内で操作を実行するときに影響を及ぼします。場合、それはどうすればよいですか?
スキーム: 追加スラッシュとストリップスラッシュを使用できます
追加スラッシュは一重引用符 (,)、二重引用符 (")、バックスラッシュ ()、およびバックスラッシュを使用した NULL (NULL 文字) をエスケープできます
ストリップスラッシュは追加スラッシュの反対です 1 つの方法は、これらのエスケープされた値を復元することです
2. 一部の PHP バージョンでは、magic_quotes_gpc 構成が便利です。つまり、自動マジック クオートです。つまり、この構成がオンになっている場合、値 $_POST、$_COOKIE、$_SESSION が自動的に設定されます。エスケープ、エスケープする必要はありません
この場合はどうすればよいですか?
答え: 互換性と移植性のために、それを判断する必要があります。
次のコードを見てください:
<?php $textarea = $_POST['textarea']; if(get_magic_quotes_gpc()){ echo '魔术引号以开启,$textarea不需要转义','<br />'; }else{ echo '魔术引号未开启,$textarea需要转义','<br />'; $textarea = addslashes($textarea); } ?>
<?php file_put_contents('01.txt', htmlspecialchars($_POST['textarea'])); echo file_get_contents('01.txt'),'<br />'; //返回<script type="text/javascript"> while (true) { alert('a'); }; </script> ?>