| Version | Supported |
|---|---|
| 1.0.x | ✅ (active) |
| 0.0.x | ❌ |
Security fixes are released as patch 1.0.x. Pin to ^1.0.11 and run flutter pub upgrade regularly; check CHANGELOG.md for Security entries.
- Private key / Signer:
privateKeyis now optional. If provided, must be 64 hex chars; invalid rejects with-32602and renders initError – never crashes or logs. Read-only mode (Web3WalletConfigwithoutprivateKey/signer) needs no key; signing throws4100. PreferWeb3Signer(WalletConnect / Secure Enclave) over embedding keys. Store keys viaflutter_secure_storage+ biometrics; do not hardcode. - JS injection: provider info, chainId, accounts, errors are
jsonEncoded beforeevaluateJavascript(lib/provider/provider_script.dart,lib/web3_js_bridge_callback.dart,lib/ethereum/ethereum_provider.dart:841). - Permissions:
Web3WebView.onPermissionRequestdefaults toDENY; grant only after user prompt. - RPC: use HTTPS with API key, pin certs via
onReceivedServerTrustAuthRequestif needed.
- Email: via GitHub Security Advisories on https://github.com/datit309309/web3_webview – “Report a vulnerability” (private).
- Include: affected
version, reproduction (DApp URL +Web3WalletConfig),WalletException.codeif any, and whetherprivateKeywas at risk. - Response SLA: acknowledgement within 48h, triage within 5 business days, patch or mitigation guidance within 14 days.
- Disclosure: coordinated 90-day window after fix is published on pub.dev; reporters credited in
CHANGELOG.mdunless opted out.
- Prefer
Web3SigneroverprivateKey; if usingprivateKey, load from secure storage, not Dart strings/assets - Use read-only mode when only
eth_call/eth_get*is needed - Allowlist
initialUrlRequestorigins and gateshowConnectWalletwithcontroller.getUrl().hostcheck - Override
onPermissionRequestto deny by default - Handle
WalletExceptioncodes4001/4100/4200/-32602in UI andonError(4100= read-only without signer) - Keep
flutter_inappwebviewandweb3dartup to date