忍者ブログ
にわか情報系ががんばります.備忘録,あるいは同じ躓きつまづきをした人のために

htmlspecialcharsとENT_QUOTES

htmlspecialcharsとENT_QUOTEについてよく分からんかったので動かして確かめてみた.

...っていうのを書こうとして,ブログにhtmlをソースとして書こうとしたらhtmlで解釈されてしまって,
どうすればいいかと思案した挙句が,なんというか,本末転倒?
まあいいや.
ちなみにPHPマニュアル - htmlspecialchars
に書いてあるままなんですけどね.

↓こんなphpを書きます.

<?php
$char1="color='red'"."\n";
$char2='color="red"'."\n";
echo "char1=".$char1."<br>\n";
echo "char2=".$char2."<br>\n";
echo "A. ".htmlspecialchars($char1)."<br>\n";
echo "B. ".htmlspecialchars($char2)."<br>\n";
echo "C. ".(htmlspecialchars($char1,ENT_QUOTES))."<br>\n";
echo "D. ".(htmlspecialchars($char2,ENT_QUOTES));
?>

これをブラウザで見るとこうなります.

char1=color='red'
char2=color="red"
A. color='red'
B. color="red"
C. color='red'
D. color="red"

ソースを見るとこうなってました.

char1=color='red'
<br>
char2=color="red"
<br>
A. color='red'
<br>
B. color=&quot;red&quot;
<br>
C. color=&#039;red&#039;
<br>
D. color=&quot;red&quot;


<や>や’や”が変換されています.

ここではcolor="red"と書いてますが,
たとえばこれが入力フォームからとってきた値を表示しているものだとすると,
<a href='hoge' onclick='alert(404)'>ここをクリック</a>
って値を表示させれば,
ここをクリック
ってなります.
危ない.
ENT_QUOTESを指定すると"も’も変換してくれるのでソースで見ると
&lt;a href='hoge' onclick='alert(404)'&gt;ここをクリック&lt;/a&gt;
ってなってるので実行されない.
みたいな.

どうしようブログ書くのがメンドウだ.
詳しく書こうと思ったけど結果的にすごく適当.
PR