Skip to content

v0.3.3 — Security & Modernization Audit

Choose a tag to compare

@dingman dingman released this 19 Mar 17:55
· 4 commits to master since this release

Summary

Complete security and modernization audit of MU-Migration. 32 defects identified and fixed.

Highlights

  • Dependency removal: Replaced abandoned alchemy/zippy with native PHP ZipArchive
  • PHP 8.0+ required: Updated minimum version, uses str_contains(), random_bytes(), named constants
  • Deprecated API cleanup: Replaced insert_blog(), get_blog_details(), $GLOBALS['current_site']
  • Defense-in-depth hardening: Input validation, path traversal guards, atomic file writes, argument sanitization
  • CI modernization: Replaced .travis.yml with GitHub Actions

Fixed Defects

ID Description
DEF-001 DB prefix format validation
DEF-003 Replace deprecated insert_blog() with wp_insert_site()
DEF-006 Replace deprecated get_blog_details() with get_site()
DEF-008 Zip path traversal protection
DEF-010 Atomic map file writes
DEF-011 Cross-filesystem rename fallback
DEF-012 Idempotent site creation
DEF-013 Plugin destination path validation
DEF-017 Role validation before set_role()
DEF-018 Password hash format validation
DEF-019 Replace deprecated $GLOBALS['current_site']
DEF-020 Stop resetting $wp_actions
DEF-021 Include all tables with prefix in search-replace
DEF-022 Warn on multiple user matches
DEF-025 Sanitize runcommand() argument keys
DEF-026 Table name validation
DEF-027 Remove error suppression in delete_folder()
DEF-028 Guard fgets() false return
DEF-029 i18n — accepted as-is (CLI tool, no translations)
DEF-030 Atomic rename in addTransaction()
DEF-031 Validate blog_id before switch_to_blog()

Breaking Changes

  • PHP 8.0+ required (was 7.1)
  • ext-zip required (replaces alchemy/zippy)
  • helpers.php function extract() renamed to extract_zip()

🤖 Generated with Claude Code