htmlspecialcharsについて(セキュリティ)
PHP5&MySQL5(OS:XP)で、テキストボックスに文字をいれ、DBに書き込む処理を作成しています。
「htmlspecialchars」を利用してセキュリティをかけたいのですが、htmlspecialcharsを使っても使わなくても同じ結果(セキュリティがきかない)が出てきてしまいます。
何が理由がお分かりの方、教えていただけると助かります。
---ソース
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formComment")) {
$insertSQL = sprintf("INSERT INTO comment_table (entry_id, name, email, url, `comment`) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['entry_id'], "int"),
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['url'], "text"),
GetSQLValueString($_POST['comment'], "text"));
を
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formComment")) {
$insertSQL = sprintf("INSERT INTO comment_table (entry_id, name, email, url, `comment`) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString(htmlspecialchars($_POST['entry_id']), "int"),
GetSQLValueString(htmlspecialchars($_POST['name']), "text"),
GetSQLValueString(htmlspecialchars($_POST['email']), "text"),
GetSQLValueString(htmlspecialchars($_POST['url']), "text"),
GetSQLValueString(htmlspecialchars($_POST['comment']), "text"));
に変えています。
また、$_POST['comment']の入力文字は、
<script type="text/Javascript">window.alert('Javascriptが実行されました');</script>
でも
<iframe width="500" height="250" src="http://book.xxxx.co.jp/"></iframe>
でもタグの内容通りの結果が表示されてしまいます。