[PHP] $_GET とか $_POST するとき htmlspecialchars には ENT_QUOTES をした後 addslashes しておく必要がある

以下を参考に PHP の $_GET とか $_POST を使う上で注意すべきことのメモです。
記事の訂正:PHPのhtmlspecialcharsにはENT_QUOTESを付ける:phpspot開発日誌

$_GET とか $_POST するとき、そのまま読み込んでいては DB の内容を全部抜きとられたり、条件分岐を ture にして通過したりできてしまうので、読み込む前に htmlspecialchars($str, ENT_QUOTES) した後、addslashes($str) すれば、ほとんど回避できるのかもしれません。

コード

1
2
$str = htmlspecialchars($str, ENT_QUOTES);
echo addslashes($str)

でも毎回これやるの面倒くさいので。関数にしてしまうってのもアリなんでしょうか。名前は、頻繁に使うのでカッコよくて短いのが良いですね。gb とかカッコいいですかね。

1
2
3
4
5
6
function gb($str) {
	$str = htmlspecialchars($str, ENT_QUOTES);
	return addslashes($str);
}
 
echo gb($_POST['bar']);

最近何でも関数にしてしまうのが楽しくて仕方なくて。変なことになってたりしたら是非突っ込んでください。

コメント

コメントは受け付けていません。