dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

「体系的に学ぶ 安全なwebアプリケーションの作り方」の環境構築をmacで行う

勉強したいと思っている分野だったので、こちらの書籍を購入しました。

実際にPHPで構築したサーバへの操作を通じてセキュリティに関する知識を学ぶのですが、
そのための環境構築の手順がWindows向けに書かれており、
macでの環境構築に多少手間取ったのでメモ。

1. 仮想OSのセットアップ
macでもwebサーバは付属CDに入っているUbuntuを使用しますが、
仮想OS用のソフトとしてVMWare Playerにmac向けの無償版はないので
VirtualBoxを使用。

まず、付属CDからWASBOOK.zipをコピーし、解凍。
中に入っているwasbook.vmdkをVirtualBoxで使用できる.vdiに変換する。

もしかしたらそのまま.vmdkでいけたのかもしれないのだけれど、
私は以下のコマンドで.vdiに変換して仮想マシンを新規作成しました。

Vboxmanage clonehd --format VDI wasbook.vmdk wasbook.vdi

なお、このコマンドは

こちらのサイトを参考にさせていただきました。

2. ネットワークの設定
書籍ではUbuntuを起動後

ifconfig eth0

コマンドでIPアドレスを確認できると書いてあるが、
mac + VirtualBoxではその前にちょっとした設定がある。

 2.1 VirtualBox自体の設定。
下のように、ネットワークの設定をブリッジにする。
(この、仮想OSのネットワークの種類が全然わからないんだよな...調べないと)
f:id:dackdive:20140114003740p:plain

 2.2 Ubuntu内のネットワークの設定ファイルを編集。
設定ファイルは

/etc/network/interfaces

にある。
また、こちらの記事
「体系的に学ぶ 安全なWebアプリケーションの作り方(wasbook)」の仮想マシンを mac の VirtualBox で動かす - techlog
にもあるように、VirtualBoxのアダプタ1で設定したネットワークは
Ubuntuではeth0でなくeth1になる模様。

なので、/etc/network/interfacesに次の2行を追加。

auto eth1
iface eth1 inet dhcp

保存後、設定を反映。

ifup eth1

これでifconfig eth1とやるとinet addrがちゃんと表示されます。

 2.3 macのhostsファイルの編集
書籍のp17,18あたり。
example.jp、trap.example.comを設定ファイルに追加します。
macのhostsファイルはここです。

/private/etc/hosts

書くことは書籍に書いてることと同じ。

ここまでで、書籍を勉強するための環境は構築できたはずです!

3. Fiddlerのかわりになるツールを探す

解析ツールとして紹介されているFiddlerってのもWindowsでしか使用できないのね。
ただ、httpのリクエスト・レスポンスを見るだけなら
Chromeデベロッパーツールなり
FirefoxアドオンのFirebugで表示できるので問題はないです。

以下は、書籍を読みながら色々ツールを使ってみた感想のようなもの。

  • hiddenパラメータを書き換える(p.36)

FiddlerのAuto Breakpointsに該当するような機能は
おそらくChromeデベロッパーツールやFirebugにはありません。

macで同じようなことを試してみるためのツールとしては
Tamper Data というFirefoxアドオンがありました。
https://addons.mozilla.org/ja/firefox/addon/tamper-data/
f:id:dackdive:20140114011254p:plain
こんな感じでPOSTパラメータを書き換えたりすることができますが、
日本語とかはURLエンコードされた文字を指定しないといけないようです。

これもFiddlerには機能としてあるけどFirebugとかにはないですね。
と思ったらFirebugでは以下のようなエンコード/デコードのメソッドがあるようです。

# エンコード
btoa("文字列")
# デコード
atob("文字列")

これを使えば、Basic認証の文字列を変換して中身を確認することができますね。
まあ、書籍の中でここはそこまで重要じゃなさそうですけど。

4. さいごに

最初は戸惑いましたが、ググるとけっこう情報が出てくるので何とかなりました。
また、
「サンプルとして表示しているphpファイルってUbuntuのどこにあるんだ?」
っていうのが気になって調べたのですが、ここにあります。

# phpファイルの配置場所
/var/www 以下
# apacheの設定ファイル(macでいうhttpd.conf)
/etc/apache2/apache2.conf