開発環境
- 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ではPHPのスクリプトがそのままブラウザに表示されてしまうから。
問15-2.
データベースに格納する前にパスワードをエンコードする場合、md5()関数より安全な関数はsha1()関数。実際に長さを比較。
コード(TextWrangler)
<html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <title></title> </head> <body> <?php $password = "password"; $password1 = MD5($password); $password2 = sha1($password); echo "パスワード: $password<br />"; echo "暗号化<br />"; echo "mod5()関数: $password1<br />"; echo "sha1()関数: $password2<br />"; ?> </body> </html>
問15-3.
スクリプトでオートグローバル変数を使用してはいけないのは、悪意のあるユーザが想定外のパラメータをGETやPOSTに与えてPHPスクリプトを実行できてしまうから。
問15-4.
「しrん来仕手はいけないユーザデータ」には、
- GETに含まれるデータ
- POSTに含まれるデータ
- Cookie
- セッションデータ
- ブラウザから与えられた$_SERVER[]スーパーグローバルの値
がある。
併せて読んでいる書籍。
0 コメント:
コメントを投稿