開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語)
- MySQL (データベース)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
『初めてのPHP & MySQL 第2版』(Michele E. Davis、Jon 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.
信頼してはいけないユーザデータは、
- GETに含まれるデータ
- POSTに含まれるデータ
- Cookieのデータ
- セッションデータ
- $_SERVER[]スーパーグローバル
併せて読んでいる書籍。
Pythonの学習が1周したので本書が終了したら上記の2冊を順に取り組む計画!
0 コメント:
コメントを投稿