初心者がCakePHPをインストールしてみる。

初心者がCakePHPを始めると宣言したのは1週間以上前。
進展が遅いですが、ようやくインストールです。
インストール手順を参考にしたのは下記の記事と書籍。
基本的にダウンロードして指定フォルダに保存するだけなので、特に難しいところはありません。
3章 CakePHP のインストール
“インストールの説明” フォーラム – CakePHP Users in Japan
CakePHPガイドブック
CakePHPガイドブック

1.XAMPPで基本環境の構築

まずはApache、MySQLの環境がローカルPCに無いと話しになりません。
小生はUSBメモリにXAMPP Liteを導入しており、この環境で引き続きCakePHPを使用します。
USBメモリにPHP環境構築 XAMPP Lite
(USBメモリにこだわる必要はありませんが・・・)
XAMPPのインストール以外に、CakePHPには推奨設定があります。
・mod_rewriteの設定
/xampplite/apache/conf/httpd.conf
・”LoadModule rewrite_module modules/mod_rewrite.so”のコメントアウトを外す。
・「”AllowOverride None”を”AllowOverride All”などに書き換え」とありましたが、xamppでは設定済みのようでした(?)

2.CakePHPのインストール

次にCakePHPのインストール。ダウンロード、解凍して、指定フォルダに保存するだけ。
ダウンロード
CakePHP: the rapid development php framework. Downloads
1.1系をダウンロードし、ZIPを解凍して/xampplite/htdocs/cakeとして保存しました。
これでhttp://localhost/cake/にアクセスするとCakePHPの初期画面が表示されます。
ただ、データベースの設定がないとアラートがでます。

3.データベースの設定

まずはphpMyAdminなどでDBを作成します。
(あとのチュートリアルで使用するなら”blog”などの名前で)
次にCakePHPのデータベース接続設定です。
/cake/app/config/database.php.defaultの.defaultをとってdatabase.phpとします。
そしてclass DATABASE_CONFIGのlogin、password、databaseを適宜設定します。
(xamppliteのままならloginはroot、passwordは無し)
以上でhttp://localhost/cake/にアクセスして下記ページが表示されれば成功です。
CakePHP(tm) - Home.gif
補足1.データベースを含め文字コードの設定が必要と手順にはありますが、UTF-8で進めるならば特に設定しないで良さそうです(?)
補足2.今回は開発環境が前提です。公開環境では注意が必要です。
(参考)3.4.CakePHP のセットアップ
これでCakePHPのインストールは完了です。次回はCakePHPを動かすチュートリアルに進みます。
(次回)付録 A. Cake ブログチュートリアル

初心者がCakePHPの勉強を始めるよ。

PHPフレームワークの本命と言われるCakePHPの勉強を始めました。
小生のPHPスキルは講習会に数回通った(PHPカテゴリ参照)のと、参考書を一読して動作確認した程度。
PHPによるWebアプリケーションスーパーサンプル 第2版
PHPによるWebアプリケーションスーパーサンプル 第2版

実践的なPHPの開発経験を積まずに、いきなりフレームワークに手を出すのは問題かもしれませんが、下記の記事を読みチャレンジすることにしました。
むしろ初心者ほどフレームワークを使うべき6個の理由。[HW]

実は私は、PHPのprintやechoを知ったのはつい最近です。

えー。

2. プログラミングの学習にはパラシュート法こそ最適。

ほー。
同時期に下記の記事も読みました。
勉強が苦手な人向けの「遅延評価勉強法」 : ロケスタ社長日記

たとえばプログラムを勉強するときに、「書籍を1ページ目からやる」のではなく「2ch型掲示板が作りたいから必要なところを勉強する」のが遅延評価勉強法になります。

時間の無い社会人は目的に向かっていきなり着手するのが良い。
そして、このジョルノ・ジョバーナには作りたいウェブアプリのアイデアがある!
唐突にCakePHPを始めることにしました。
時折、初心者なPHPネタがアップされた際には目をつむって頂けますと幸いです。
[補足]
#どうやらCakePHPを使えば高速にウェブ開発ができるらしい。
#仕事上の案件で、開発会社がCakePHPを採用した納品物があり、中を覗くこともままならないのが問題。
参考
フォーラム – CakePHP Users in Japan
CakePHP のおいしい食べ方: CakePHPの上手なはじめ方

XAMPP LiteでPearライブラリのインストール


中断していたPHPの勉強(USBメモリにPHP環境構築 XAMPP Lite)を新年の計で再開しています。
「XAMPP LiteはPEAR無し」と本家には書いてあったけど普通に使えました。(?)
以下Pearライブラリのインストールメモ。

>cd /d G:\xampplite\php
>G:\xampplite\php>pear install HTML_QuickForm

USBメモリ(外部ドライブ)へのcd方法がわからなかった。
エラーが出るときはバージョン情報まで含める。

G:¥xampplite¥php>pear install Calendar-0.5.3

USBメモリにPHP環境構築 XAMPP Lite


結婚、新婚旅行と怒涛の日々をくぐりぬけ、私生活も落ち着いてきたので、少しPHPを集中的に学ぼうと思います。
これまでも講習会などでかじってはいますが、基礎力が欠けておりゼロからの開発ができません。
最終目標はウェブアプリを一からつくれるようになること。
実際に使うことは少ないですが開発のスキルを身につけたいです。
まず取っ掛かりは開発環境を構築します。
検討の結果、USBメモリにPHP環境を構築することにしました。
参考は下記。
ハコブログ | XAMPP Liteをインストールしてみました
apache friends – xampp for windows
1.ZIPファイルを解凍してUSBメモリにコピー
2.setup_xampp.batを動かして”Refresh now!”
3.xampp-control.exeを動かす
xampp-light.gif
ApacheをStartします(当たり前ですがIISや他のApacheが動いている場合は重複するのであらかじめ止めておく)。
以上で完了。localhostで確認します。
XAMPP.gif
phpMyAdminでMySQLも扱えます。
phpMyAdmin.gif
USBメモリを他のPCに挿した場合はドライブ名など環境が変わるので、setup_xampp.batを改めて動かして再設定します。
XAMPPの環境構築は本当に簡単でした。
またUSBメモリへの環境構築なのでPC本体に影響がないのも気が楽です。
USBメモリのためか動作が重いですが、現段階では学習用ですので支障はありません。
これまでもそうですが、色々と勉強が続かないのは始めるまでを面倒に感じるからでした。
このようにいつも開発環境を持ち歩き、自分自身が常にPHPに触れることが可能である環境にいることが、心理的な障壁を下げ、途中で投げ出す可能性を減らすと思われます。
なおPHP独習の参考書はこちら。
PHPによるWebアプリケーションスーパーサンプル 第2版
PHPによるWebアプリケーションスーパーサンプル 第2版

各所で素晴らしいとすすめられている(PHPプログラムを始めてみたい、難しいと思っている人の為に*ホームページを作る人のネタ帳)だけあって非常に良いです(広辞苑並みの厚さは除き)。
各パーツごとに分割されて解説してあるので、まるで受験で手にした構文集のようです。
ただ「構文集」であるがゆえに、まったくゼロでプログラミングに触れる方には難しいかと。
この付録のサンプルソースをhtdocsに丸ごとコピーして動作確認しながら勉強中です。
これで幾度目かの一念発起となりますが、はたして今回は続くのか。

PHP講習会私的メモ(セキュリティ編)


2006年9月末に通っていたPHP講習会セキュリティ編が開講されたので受講してきました・・・のは2006年11月27日、28日。すでに半年が経過しております。まとめるのが遅すぎますが自分メモなのでご容赦ください。

第1回「セキュリティの概要」

●セキュリティサイクル
・「セキュリティサイクル」(予防→検出→対策→回復)を回しましょう。
・運用マニュアルを作成しましょう。運用は重要です。
●php.iniの推奨設定
たくさん列挙されましたが、抜粋。
・expose_php=off → 隠しURL(クレジット、バージョン表示)を参照不可にする
・display_errors=off → エラー詳細の非表示(開発中はonに)
・error_log=ファイル名 → 外部から参照されない別ディレクトリに設定
・register_globals=off → 定数・変数を上書きさせない
・magic_quotes_gpc=off → SQLインジェクション対策には不完全なのでoff
●入力値のチェック
ブラックリストではなく正規表現でホワイトリストを作成しましょう。
●セッション(クッキー)管理
phpに限らず慎重に。
●パラメータの露出
クエリストリング(GET値)、hidden値は慎重に。
●プログラムコードの流出
・info.phpの削除忘れ
・バックアップファイル、バージョン管理ファイル(sample.php.bl)
・libsフォルダの権限設定ミス
→テキスト状態で表示されるのでソースコードが漏洩します。
第1回は以上です。標題の通り概論であり既知の内容が多かったです。

第2回「詳細な脆弱性とその対策」

いよいよ具体的な脆弱性の説明になります。
●ブルートフォース攻撃
力技攻撃。総当りでID,PW,URLを試す。
対策:パスワード強度を高める、Basic認証、POST/GET値のホワイトリストチェック。
●Nullバイト攻撃
「\0」が文字列の終端として認識されそれ以降の入力値が認識されない関数がある。
対策:バイナリセーフでない関数にユーザー入力をいれてはいけない。
●SQLインジェクション
勝手にSQL文を発行されデータベースが不正操作される。
対策:SQL文のエスケープ。DBごとに関数が異なる(mysql_real_escape_string(),pg_escape_string())。
●ディレクトリトラバーサル
相対パス「../」「..\」により想定外のデータにアクセスされる。
対策:不正文字列を削除する。basename()でファイル名を取得するのはNullバイト攻撃の危険がある。
●コマンドインジェクション
ユーザー入力からOSコマンドが実行される。
対策:サニタイジングする(escapeshellarg())。
●セッションハイジャック
セッション変数(PHPSESSID)をGET値などで指定するとそのIDでセッションが継続する。
リンクに記述されていて踏んだ場合など第三者にIDが知られるとセッションが乗っ取られる。
対策1:セッションはCookieのみにする。携帯電話などCookieが使えない場合はGETの利用も有効だけど・・・。
対策2:session_start()のあとにsession_regenerate_id(true)を実行してセッションIDを変更する。
(php5.1.0未満は古いセッションファイルが残るので削除を自前で実装する必要あり)
●クロスサイト・スクリプティング(XSS)
ユーザー入力のhtmlをそのまま表示してしまうとjavascriptが実行されたりする。
対策:HTML生成時にサニタイジング。
htmlspecialchars($str,ENT_QUOTES)。もしくはsmartyのescape。
●クロスサイト・リクエスト・フォージェリ(CSRF)
サイトの管理者権限をもつユーザーに不正な操作を強いる。
例:不正処理が記述されたHTMLメールをサイト管理者宛てに送る。サイト管理者がメール閲覧時にログイン状態であるとその処理が実行される。文章で説明しづらい。
対策:ワンタイムチケットを発行する。リファラーチェックはダメ。POSTに変換もダメ。
詳細な攻撃方法が説明され勉強になりました。とくにCSRFの手法はよく思いつくなぁという感じです。この被害って過去に例があるんでしょうか?
講義はコーディングではなく座学でしたので、現場の開発者以外でもWebに関わる人には勉強になると思います。
おまけ
AAで図解!ずばり一目で全く解らないコンピュータセキュリティ
上記の授業とは無関係ですがAAでセキュリティがわかります。超わかりやすい。

  • 他のブログ

    育児で買ったモノたち
  • Twitter

  • 最近の投稿

  • 最近のコメント

  • はてなブックマーク

  • RSS購読

    RSS Feed RSS - 投稿

  • カテゴリー

  • 月別

  • カレンダー

    2017年4月
    « 3月    
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
  • プロフィール


    健康・医療系の出版社でウェブに関わる営業企画と浅い技術。Webディレクター?
  • キーワード検索