チェックリスト
作成日時:2025-05-09
更新日時:2025-05-09
システム開発における個人的なチェックリスト。
要件定義
- ヒアリングシートの作成と運用
セキュリティ
- CORS
- SOPはアドレス直打ちには効かない
- パスワード
- ソルト
- 試行回数
- ロック
- 有効期間
- ポリシー
- BCrypt
- 2FA
- CIA
- 認証
- JWT有効期限。トークン盗まれても被害は最小
- 認可(RBAC, ABAC)
- リソース
- 認証
- HSTS
- CSP
- CSRF
- リファラチェック
- サニタイジング
- セッション
- DB?スティッキー?
- ログ
- 個人情報が出力されない事
- レスポンスヘッダ
- サーバーバージョンなどを隠蔽する
SEO/パフォーマンス
- JSON-LD
- sitemap.xml
- robots.txt
- クローラにAPIが叩かれないように
- LLMs.txt
- metaタグ
- ogp
- PageSpeed Insights
- a11y
- モバイルフレンドリー対応(レスポンシブとか)
- HTTPS
- 画像最適化
- ウェブ解析ツールの導入(GTM)
ファイルアップロード
- サイズ(WAF/FW)
- 頻度
- 文字コード
- BOM
- 改行コード
- エスケープ
- 囲み文字
- ウイルス
- exif
- Zip爆弾
DB/SQL
- 最少・最少・最短・最速の原則
- IN句が空になる可能性
- UPSERT時にON CONFLICTで更新する値
- 実際にUPDATEされる内容がexcludeに入る
- データ量
- 適切なインデックス
- 量が多いならLIMITかけたり
- 実行計画
- VACUUM/ANALYZE
- 大量データ投入後とか
- 統計情報の凍結
- 事前に大量データDEL-INS
- ANALYZEが行われないと最悪の実行計画になるならば、安定したSQLを書いた方がいい
- VACUUM/ANALYZE
- ロック
- 分離レベル
- タイムアウト
- statement_timeout
- deadlock_timeout
- アラートも発光しとく
- ロールバックされることの確認
- SpringのrollbackForとか
- インジェクション対策
- 処理の分割
- プリペアドステートメントには上限がある
- シーケンス
- 抜け番の許容
運用
- ファイル、ログを消す間隔の同意
- 運用、保守範囲の同意
- アラート発生時のフロー
- x-forwarded-for
クラウド
- CloudWatchなどで停止できないか
- LBでsorryページ出したり
- ECS on Fargate + Terraformとか
- ログ抑制
- キャッシュの採用
- DBチューニング
- コネクションプール
- JVMのメモリ設定
- WAF/VPCルール
- EBS:ディスクアラート
- S3:マルチパートアップロード
アプリ
- 共通化
- 開始/終了のロギング
- 例外ハンドラ
- バリデーション
- 値オブジェクト
- Enum
- 型で制限する
- レスポンス圧縮
- ネットワークコストの節約
- サイズを小さくすれば転送コストも下げられる(レスポンスが速くなる)
- 圧縮自体もコストが掛かる。一定サイズを超えたら圧縮するように設定する。
- input
- type=“email”において、絵文字を設定すると挙動が変になる
コンテナ
- マルチステージビルド
- springは基本的にjarで動かす
- tomcatやapacheを使って何かをしたいならばいれてもいい
- コンテナは基本的に最小構成であるべきらしい
負荷テスト
- jMeterのGUIを使うな