安全なWebアプリ開発の鉄則チェックリスト

感想おまちしてます!

安全なWebアプリ開発の鉄則2006を参考にした。

これを元に実装検討、テストケースを作るといいかもしれない。

スポンサーリンク

チェックリスト 

観点 結果(○か×) 備考    
画面設計
新たにウィンドウを開かない 開く場合はそのさきにリンクをつけないなど対応を
Webブラウザのデフォルト設定で動作すること
フレームを使用しない
アドレスバーを隠さない SSLが使われているか確認できなくなるし、違うドメインに飛ばされても気がつかない
エラーページにスタックトレース等を表示しない
エラーページにファイルパスを表示しない
ドメイン名
システムが使用するURLにおいてドメイン名は1つとする ドメインが変わるとユーザは不安になる
SSL
暗号化なしに送受信してはならない情報を明確に
入力欄のある画面をhttps:// とする
サーバ証明書は警告の出ないものを
SSL2.0を使用しない
暗号アルゴリズムにはCRYPTREC電子政府推奨暗号を用いる
セッションIDが暗号化されない通信路を流れないようにする
Cache
Cacheを禁止するようにする
CSRF対策(参考サイト
特定副作用を持つ画面はPOSTメソッドによるアクセスに限定
特定副作用を持つ画面に遷移する前の画面には秘密情報をhidden…
XSS対策
HTMLの出力は直接プリントしない
HTMLタグを含む入力を認める機能を設けない
SQLインジェクション対策
SQL呼び出しをするコードは一か所にまとめて抽象化すること
SQL文を直接組み立てることをせず、Prepared Statementを使用すること
セッション
ログイン中のユーザの特定は、セッションIDにより行うこと
ログインが成功する前の段階でセッションIDを発行しない Session Fixation脆弱性を防止する
セッションIDは、cookieまたは、POSTアクセスのhiddenパラメータにのみ格納すること
セッションIDはログインする都度、乱数により生成する
セッションIDは80ビット以上とする
ログアウト機能を設け、ログアウト機能が呼び出されたらセッションを破棄すること
一定時間操作がなかったときに、セッションを破棄する(自動ログアウト)こと
リダイレクタ
パラメータで指定されたURLへのリダイレクト機能を設けない
パラメータ
セッションID以外の値を格納するcookieを発行しな
URLパラメータに秘密情報を含めない
パラメータにファイル名(パス名)を一切含めない
画面で設定されるパラメタ(hiddenも)はサーバ側で必ずチェックする
実装
シェル呼び出しを使用しない
外部コマンド呼び出しを使用しない
C言語等のバッファオーバフロー系の脆弱性が所持得る言語を使用しない
eval()など指定された文字列を言語として実行する機能を使用しない
暗号を使用する場合は、暗号アルゴリズムにCRYPTRECの電子政府推奨暗号のみを用いること
乱数を用いる場合は、暗号学的に安全な擬似乱数生成系により乱数を生成する
パスワードは8文字以上設定するように作る
実装用部品の選択(略)
一時ファイルは速やかに削除する
一時ファイル作成を公開ディレクトリで行わない
本番用ソースコードに実装コメントを表示しない
Javascriptの自動生成は行わない