見出し画像

脆弱性対応ってなに?

XSSとは

「ハンドルネーム設定/解除の添削」に書いてあったんですけど、
「XSS(クロスサイトスクリプティング)」ってなんなんでしょうか?

今回は入力フォームからハンドルネームを送信してますよね?
このハンドルネームに、
ちょっと細工をするとイタズラができる、
みたいな技=脆弱性があり、その対応をするってことです。

では、ここでXSSのサンプルソースを書いちゃいましょう!

実際にXSS攻撃を実行してみよう

<form method="POST">
<input type="text" name="test" value="" />
<input type="submit" />
</form>
<?php
print $_POST['test'];
?>

これは脆弱性のあるプログラムです。
テキストボックスに
<script>alert(0);</script>
を入力してボタンを押してみてください。

メッセージボックスで0が表示されました。

よーく考えてもらいたいんですけど、
本当は「<script>alert(0);</script>」がそのまま表示されないと駄目なんです。なのにJavascriptが実行されて「alert(0)」が実行されてしまった、これがXSSという脆弱性になります。

これが自分だけの表示であればいいんですけど、
だいたいのSNSだと、ほかの人のコメント内容って表示されてますよね?
そのコメント内容にXSSの脆弱性があると、
例えば
「アダルトサイトに転送するJavascript」
「ページリロードが無限に実行されるJavascirpt」
などが実行されてしまいます。

わかってしまいました!
自分でかけ!って言われたら、
攻撃も防御も書けませんが、意味はわかりました!

脆弱性対応をしよう

では、対策をします。

//print $_POST['test'];
print htmlspecialchars($_POST['test']);

この変更をした後に、
<script>alert(0);</script>
をテキストボックスに入れて送信したら、
メッセージボックスは表示されなくなり
「<script>alert(0);</script>」が画面に表示されます。

感想

Windowsのアップデートで、
よく脆弱性って言葉は聞いてましたけど、
ぜんぜんどんなものか知らなかったんですけど、
やってみると、結構簡単に実行できちゃったのが
ちょっと怖くなりましたね。
WindowsUpdateとかは早めにやったほうがいいんですね。

これからWEBサイトとかゲームとか作るときに、
ちゃんと脆弱性対応をする必要があることは理解しました!

いいなと思ったら応援しよう!