#author("2025-12-05T09:43:14+09:00","default:pengwei-admin","pengwei-admin") #author("2025-12-05T10:19:00+09:00","default:pengwei-admin","pengwei-admin") [[web/API]] #contents ** Validation Check 汎用 [#gb9d9f05] UserNamge : 文字数3~20以内 ※检测重复 UserNamge : 文字数3~20以内 Email : 形式(xxx@yyy.com) 年齢 : 整数、0以上(1)150以下 ID、PW易誤認文字除外 : I/1, u/v, O/0,l/L name01 : 文字数255以内 name02 : 文字数255以内 kana01 : 文字数255以内 kana02 : 文字数255以内 company_name : 文字数255以内 postal_code : 7位数码,或8位诸如这种格式的数码:XXX-XXXX addr01 : 文字数255以内 addr02 : 文字数255以内 email : 文字数255以内,格式类似这种:eccube@example.com phone_number : 14位以内数码 password : 文字数255以内 name : 文字数255以内 department : 文字数255以内 password : 文字数255以内 gakureki : 文字数255以内 syokureki : 文字数255以内 appeal : 文字数255以内 trialclass : 文字数255以内 ** 限界値 [#z1975d5a] URL長 度: <= 2048文字 ※GETはデータをURLに載せるため、URL長制限=GETのデータ量制限 Email長度: 全体 <= 254文字 ; a < 64 @ domain < 253; - PHP check例 function isValidEmailLength(string $email): bool { // 全体の長さチェック if (strlen($email) > 254) { return false; } // @で分割 $parts = explode('@', $email); if (count($parts) !== 2) { return false; // @がない、または複数ある場合 } $localPart = $parts[0]; $domainPart = $parts[1]; // ローカル部の長さチェック if (strlen($localPart) > 64) { return false; } // ドメイン部の長さチェック(RFCでは255までOKだが全体で254以内) if (strlen($domainPart) > 255) { return false; } return true; } // 使用例 $email = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com"; var_dump(isValidEmailLength($email)); // true or false POST:Server設定次第(client_max_body_size等)、実務上 数MB~数百MB。 * OWASP Top 10(2021版)の要約と対策** [#o395ff34] 1. **Broken Access Control(アクセス制御の不備)** 問題**:権限チェックが不十分で、他人のデータや機能にアクセスできる。 対策**:RBAC(ロールベースアクセス制御)、サーバ側で厳格な権限検証。 2. **Cryptographic Failures(暗号化の不備)** 問題**:パスワードや機密情報が平文で保存される。 対策**:TLS必須、強力な暗号化アルゴリズム、キー管理。 3. **Injection(インジェクション攻撃)** 問題**:SQL、OSコマンド、LDAPなどへの不正入力。 対策**:プリペアドステートメント、入力値のバリデーション。 4. **Insecure Design(安全でない設計)** 問題**:設計段階でセキュリティを考慮していない。 対策**:セキュリティ設計レビュー、脅威モデリング。 5. **Security Misconfiguration(設定ミス)** 問題**:デフォルト設定や不要なサービスが有効。 対策**:不要な機能を無効化、セキュリティ設定の自動化。 6. **Vulnerable and Outdated Components(脆弱なコンポーネント)** 問題**:古いライブラリやフレームワークを使用。 対策**:定期的なアップデート、脆弱性スキャン。 7. **Identification and Authentication Failures(認証の不備)** 問題**:弱いパスワード、セッション管理の不備。 対策**:MFA導入、セッションタイムアウト、Secure Cookie。 8. **Software and Data Integrity Failures(ソフトウェア・データの整合性不備)** 問題**:署名なしのコードや更新ファイルを使用。 対策**:コード署名、ハッシュ検証。 9. **Security Logging and Monitoring Failures(ログ・監視の不備)** 問題**:攻撃検知ができない、ログが不十分。 対策**:詳細なログ記録、アラート設定、SIEM導入。 10. **Server-Side Request Forgery(SSRF)** 問題**:攻撃者がサーバを使って内部ネットワークにアクセス。 対策**:URL検証、外部リクエスト制限。 * セキュリティ検証観点 [#d518ff3f] ** 1. CSRF対策(Cross-Site Request Forgery)** [#ocba8338] CSRFトークンの利用** SameSite Cookie属性設定** Referer/Originヘッダ検証** ** 2. XSS対策(Cross-Site Scripting)** [#hd67b068] 入力値のエスケープ(HTML, JS, CSS)** Content Security Policy (CSP) の設定** JavaScriptで`innerHTML`の直接利用を避ける** ** 3. SQLインジェクション対策** [#r021c2ac] プリペアドステートメント(Prepared Statement)使用** 入力値のバリデーションとエスケープ** ** 4. セッション管理対策** [#y1ff098b] セッションタイムアウト設定** Secure / HttpOnly Cookie属性** セッションIDの再生成(ログイン時)** ** 5. 認証・認可対策** [#k053b120] 多要素認証(MFA)** OAuth 2.0 / OIDCの利用** 権限チェックの徹底(RBACなど)** ** 6. ファイルアップロード対策** [#fce03ed7] 拡張子・MIMEタイプの検証** ウイルススキャン** アップロード先をWebルート外にする** ** 7. HTTPS通信の強制** [#pf3ed6ff] TLS証明書の導入** HSTS(HTTP Strict Transport Security)設定**