diff options
| author | Christian Cleberg <[email protected]> | 2026-07-20 11:56:37 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-07-20 13:56:41 -0500 |
| commit | 77a42a8b4f3dd89e631f8246bdea3e95f83bac6a (patch) | |
| tree | 8b2d9dda61a88a2c5eb58b35a62c966ef501f404 | |
| parent | 6e9dea95d015c0f2d335d9b89b8ee843b4c2b05e (diff) | |
| download | domain-dig-77a42a8b4f3dd89e631f8246bdea3e95f83bac6a.tar.gz domain-dig-77a42a8b4f3dd89e631f8246bdea3e95f83bac6a.tar.bz2 domain-dig-77a42a8b4f3dd89e631f8246bdea3e95f83bac6a.zip | |
fix: harden webhook transport and gate debug logging
Require HTTPS for outbound integration webhooks. Webhook URLs are
themselves secrets (Slack in particular), so an http:// endpoint leaked
both the URL and the alert payload in cleartext.
Disable DomainDebugLog in release builds. Every message used
privacy: .public, which opted out of OSLog redaction and wrote looked-up
domains to the unified log in shipped builds.
| -rw-r--r-- | DomainDig/DomainDig/DomainDebugLog.swift | 4 | ||||
| -rw-r--r-- | DomainDig/IntegrationService.swift | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/DomainDig/DomainDig/DomainDebugLog.swift b/DomainDig/DomainDig/DomainDebugLog.swift index 12a6cc5..0898e4a 100644 --- a/DomainDig/DomainDig/DomainDebugLog.swift +++ b/DomainDig/DomainDig/DomainDebugLog.swift @@ -2,7 +2,11 @@ import Foundation import os enum DomainDebugLog { +#if DEBUG static let enabled = true +#else + static let enabled = false +#endif private static let logger = Logger(subsystem: "co.zerolabs.domain-dig", category: "Debug") static func debug(_ message: String) { diff --git a/DomainDig/IntegrationService.swift b/DomainDig/IntegrationService.swift index dba8034..9948441 100644 --- a/DomainDig/IntegrationService.swift +++ b/DomainDig/IntegrationService.swift @@ -555,7 +555,7 @@ private enum HTTPIntegrationClient { headers: [String: String], timeoutSeconds: Double ) async throws { - guard let url = URL(string: urlString) else { + guard let url = URL(string: urlString), url.scheme?.lowercased() == "https" else { throw IntegrationError.invalidURL } |
