Chung's
Blog
Article
Demo
[Security]Web Application Security Checklist
December 11, 2017
security
最近セキュリティ考慮したシステム設計を経験したので、メモします。
1. ユーザー認証
ログイン失敗する際詳しメッセージが出さない
指定回数でログイン失敗したらアカウントロックをかかる
アカウントロックをかかった際管理者にメール等で通知
パースワードの有効期限を実装
パースワード変更するには現在のパースワードが必要
直接パースワードはDBに保存しない
2. 権限制御
直接URLをアクセス許可かどうか検討
各アクションは実行する前に権限をチェックする ボタンの表示、非表示等ではなくロジック実装である。
ブラウザの戻るボタンを要注意
3. セッション管理
Cookieセンシティブデーターを持たない
SessionIdはユニックであり、サーバー側にてアサインするべき
SessionIdは推測しにくい
SessionIdはできればライフタイムが短く設定するべき
ログアウトする際SessionIdは廃棄するべき
CookieはHttpOnly,Secure属性設定するべき
パーマネントCookieよりセッションCookieを使用したほうが良い
4. バリデーション
クライアントからのデータは信頼性がゼロとして必ずサーバーサイドバリデーション実装
HTML特殊文字、危険な文字等エスケープするべき
5. クロスサイトスクリプティング
動的な内容を表示する箇所はすべてHTMLエスケープするか確認
Query stringのデータは直接表示させない
6. コマンドインジェクション
シェルコマンドが直接呼び出す際パラメータエスケープをするべきだ
7. SQLインジェクション
SQLを組み立てる際ストリング結合ではなくすべてprepare statementを使用するべき
8. バッファオーバーフロー
すべてのリクエストデータは最大値をバリデーションする
9. 暗号化,秘密情報
認証されたアルゴリズムを使用すること
秘密鍵、DB情報等を持っている.envファイルは保護すること
10. エラーハンドリング
エラーになった際エラー情報をユーザーに見せないこと
11. ロギング
ログには日付、タイプ、詳細情報が出される
12. サーバー設定
Debugモードオフする
すべてリクエストはHTTPSを介すること
Apacheサーバーの場合はApacheチェックリスト参照する
Back to Article
[Security]Web Application Security Checklist
December 11, 2017
[Security]HTTP Security Headers
October 13, 2017
Comments
Powered by
Vssue
Initializing...