Skip to content

feat: FT204 datetime — ISO 8601 パース・タイムゾーン変換・日時演算 (v1.8.81)#569

Merged
hideyukiMORI merged 1 commit into
mainfrom
feat/568-ft204-datetime
May 22, 2026
Merged

feat: FT204 datetime — ISO 8601 パース・タイムゾーン変換・日時演算 (v1.8.81)#569
hideyukiMORI merged 1 commit into
mainfrom
feat/568-ft204-datetime

Conversation

@hideyukiMORI
Copy link
Copy Markdown
Owner

Summary

  • datetime + zoneinfo モジュールの FT204 実装(セキュリティ診断・クラッカーペンテスト両方実施)
  • ruff DTZ ルール(flake8-datetimez)を pyproject.toml に追加 — datetime.now() naive 呼び出しを検出
  • バージョン v1.8.81

実装内容

関数 概要
parse_datetime(text) ISO 8601 / RFC 3339 パース(Z サフィックス対応)
convert_timezone(iso8601, tz_name) IANA タイムゾーン変換(ZoneInfo
diff_datetimes(start, end) 日時差分計算(naive/aware 混在検出)
get_now(tz_name) UTC + 指定タイムゾーンの現在時刻
add_duration(iso8601, days, hours, minutes) 期間加算

セキュリティ診断結果(FT204: 204 % 3 = 0)

総合評価: 合格

  • パストラバーサル(タイムゾーン名経由): _TIMEZONE_PATTERN../../etc/passwd 等を遮断
  • SQL インジェクション: _ISO8601_PATTERN でアポストロフィ等を遮断
  • ReDoS: 0.007s — catastrophic backtracking なし
  • Mass Assignment: Pydantic が extra フィールドを自動無視

クラッカーペンテスト結果(FT204: 204 % 4 = 0)

攻撃耐性評価: 堅牢(15攻撃すべて耐えた)

Test plan

  • 27 tests passed (uv run pytest)
  • mypy --strict 通過
  • ruff check 通過(DTZ ルール追加後)
  • pip-audit: 既知 CVE 0件

Closes #568

🤖 Generated with Claude Code

- 実装: parse_datetime / convert_timezone / diff_datetimes / get_now / add_duration
- ZoneInfo によるタイムゾーン変換(pytz 不要)
- _TIMEZONE_PATTERN による入力バリデーション(パストラバーサル防御)
- _ISO8601_PATTERN による入力バリデーション(SQLi/ReDoS 防御)
- naive/aware 混在検出(TypeError を API 境界で 422 に変換)
- セキュリティ診断: 合格(全12カテゴリ)
- クラッカーペンテスト: 堅牢(15攻撃すべて耐えた)
- ruff DTZ ルール(flake8-datetimez)を pyproject.toml に追加
- バージョン v1.8.81

Closes #568

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hideyukiMORI hideyukiMORI merged commit 8ed2dd1 into main May 22, 2026
2 checks passed
@hideyukiMORI hideyukiMORI deleted the feat/568-ft204-datetime branch May 22, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FT204: datetime モジュール — ISO 8601 パース・タイムゾーン変換・日時演算

1 participant