###本日の内容
- 安全なWebサイトのセキュリティについて
- Vimプラグイン
- Mojoliousのインストール
##①安全なWebサイトのセキュリティについて
参照:http://www.ipa.go.jp/files/000017316.pdf
###1.1 SQL インジェクション
ソースコード内のクエリに外部から取得したクエリの断片を含む パラメータを送ることで、想定していない挙動を引き起こす手法。
具体例: http://npnl.hatenablog.jp/entry/20080412/1207965105
対策:
- SQL文にはプレースホルダ
- 正しいアカウントに正しい権限
###1.2 OS コマンド・インジェクション
※Perlアプリは特に注意 Perlのopen関数では|をつけることでコマンドが実行できてしまう。
対策:
- exec,system等の関数は基本使わない。
- 使うコマンドは予め、限定する。
###1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル
アプリ内にファイル名を扱う処理がある際、相対パスを用いて、 非開示とされるファイルにアクセスする手法。
対策:
- 渡すパラム(GET,hidden等)にパス、ファイルを公開しない。
- 使う場合はパラムのチェックを行う。
- ファイルのアクセス権限を正しく設定
###1.4 セッションハイジャック備 の対策
利用者のセッションをのっとり、サイトの利用者に成りすまし、 操作を行う手法。固定化されたセッションID等を第三者に推測 されてしまうことが原因。
対策:
- セッション ID を毎回ログイン毎に発行。
- ログイン時のセッションIDとログイン後のセッションIDを分ける。
###1.5 クロスサイト・スクリプティング、対策
入力値にスクリプトを埋め込み、それを出力させることで 正常な動作を妨げる手法。フォームに<script>タグを埋め込み、出力される等。
対策:
- ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
- 入力値のチェック<script></script>のみを除外するなど。
- HTTP レスポンスヘッダの Content-Typeフィールドに文字コード(charset)を指定する。
※文字コードを操作して、不正なスクリプトを読み込ませられる可能性があるため。
###1.6 CSRF(クロスサイト・リクエスト・フォージェリ) の対策
Webサイトにリンク、スクリプトを仕込み、利用者を偽サイトに誘導し、 そこでパスワード変更や決済などの操作をさせる。攻撃者はセッション、 利用者の機密情報を占有することができる。
- 決済、パスワード変更画面でトークンを埋め込み、実行画面で認証を行う作りにする。
- フレームワークの機能
- リファラーのチェック。
###1.7 HTTP ヘッダ・インジェクション
ヘッダーを動的に生成する処理を含むアプリケーションに Location:example.com<改行>Location:$crack のようにして、$crackへリダイレクトさせたり、 Set-Cookie: $husei<改行>Location:$example.comのように サイトの差し替えやキャッシュ汚染を行う手法。
対策:
-
ヘッダー指定に用いる専用のAPIの利用
-
外部パラムに改行文字を許可しないように、正規表現等で振り落とす。
###1.8 メールヘッダ・インジェクション
ヘッダー情報に改行を用いてBcc、本文などを付け加え意図しないスパム メールを送る手法。
対策:
* メール送信用のライブラリの利用。
* メール送信フォーム利用時、改行を許可しないようにする確認処理を加える。
###1.9 アクセス制御や認可制御の欠落
-
ウェブアプリにはログイン等の認証機能をつける。
-
ログイン後はセッションIDを発行し、認証を継続する。
###1.9 アクセス制御や認可制御の欠落
##②Vimプラグイン
jkコマンドが高速化。
hilightされたperlモジュールの説明書き、使用例を表示。
##③Mojorious のインストール、設定途中 cpan Mojorious
BEGIN {
unshift @INC, '/home/vagrant/local/script/perl5/perlbrew/perls/perl-5.18.1/lib/site_perl//5.18.1';
}
use Mojolious::Lite;
パスを修正したので、明日HelloWorldします。