2012年3月10日土曜日

開発環境

  • OS X Lion - Apple(OS)
  • Apache (Web Server)
  • PHP (サーバーサイドプログラミング言語)
  • MySQL (データベース)
  • TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)

『初めてのPHP & MySQL 第2版』(Michele E. DavisJon A. Phillips 著、西沢 直木 訳、オライリー・ジャパン、2008年、ISBN978-4-87311-365-4)の15章(セキュリティ)の問題を解いてみる。

問15-1.

インクルードファイルの拡張子は、.incではなく、.phpとすべきなのは、.incだとスクリプトの内容がそのまま出力されてしまうため。

問15-2.

データベースに格納する前にパスワードをエンコードする場合、md5()より安全な関数は、sha1関数。

コード(TextWrangler)

<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
    <title></title>
  </head>
  <body>
  <?php
    $pw = "1234567890";
    $en1 = md5($pw);
    $en2 = sha1($pw);
    echo "パスワード: " . $pw . "<br />" . 
         "md5:        " . $en1 . "<br />" . 
         "sha1:       " . $en2 . "<br />";
  ?>
  </body>
</html>

出力結果(ブラウザ)

パスワード: 1234567890
md5: e807f1fcf82d132f9bb018ca6738a19f
sha1: 01b307acba4f54f55aafc33bb06bbbf6ca803e9a

HTMLソース

<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
    <title></title>
  </head>
  <body>
  パスワード: 1234567890<br />md5:        e807f1fcf82d132f9bb018ca6738a19f<br />sha1:       01b307acba4f54f55aafc33bb06bbbf6ca803e9a<br />  </body>
</html>

問15-3.

スクリプトで「オートグローバル変数」を使用してはいけないのは、悪意のあるユーザが不正なパラメータを与えてプログラムの機能を変更できてしまうから。

問15-4.

信頼してはいけないユーザデータは、

  1. GETに含まれるデータ
  2. POSTに含まれるデータ
  3. Cookieのデータ
  4. セッションデータ
  5. $_SERVER[]スーパーグローバル

併せて読んでいる書籍。

Pythonの学習が1周したので本書が終了したら上記の2冊を順に取り組む計画!

0 コメント:

コメントを投稿