Skip to content

Instantly share code, notes, and snippets.

@kentatogashi
Last active December 30, 2015 07:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kentatogashi/7799365 to your computer and use it in GitHub Desktop.
Save kentatogashi/7799365 to your computer and use it in GitHub Desktop.

###本日の内容

  • 安全な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プラグイン

NeoBundle 'rhysd/accelerated-jk'

jkコマンドが高速化。

NeoBundle 'thinca/vim-ref'

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します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment