HTMLエンコードしても、クロスサイトスクリプティングが発生するサンプルプログラム

Webエンジニア・ソーシャルメディアの研究をしている雄大です。

HTMLエンコード、htmlspecialcharsを使っても、クロスサイトスクリプティングが発生するサンプルプログラムを書いてみました。

documentwrite.php

<?php
    $input = "<script>alert('XSS')</script>";
    $input = htmlspecialchars($input);
    echo $input;
?>
<html>
<head>
</head>
<body>
<input type="text" id ="foo" value="<?php echo $input;?>"">
<script type="text/javascript" language="javascript">
document.write('<b>'+document.getElementById('foo').value+'</b>');
</script>
</body>
</html>

これをブラウザで出力するとこんな感じになります。

&lt;script&gt;alert('XSS')&lt;/script&gt;<html>
<head>
</head>
<body>
<input type="text" id ="foo" value="&lt;script&gt;alert('XSS')&lt;/script&gt;">
<script type="text/javascript" language="javascript">
document.write('<b>'+document.getElementById('foo').value+'</b>');
</script>
</body>
</html>

しっかりとhtmlエンコードされているのがわかります。
しかし、残念な事にアラートが…!!

コメント

タイトルとURLをコピーしました