#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)設定**

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS