diff options
| author | Christian Cleberg <[email protected]> | 2026-03-18 20:23:58 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-18 20:23:58 -0500 |
| commit | c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9 (patch) | |
| tree | 28bf13b89e36774720d015a26a8979b567ad0be9 /Hutch/Networking/SRHTClient.swift | |
| parent | 1745311950fd68ad81957b3ba64f8566cd86ce19 (diff) | |
| parent | 4dd920558a1c7174c0e9a5b872325df36e363516 (diff) | |
| download | hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.gz hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.bz2 hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.zip | |
v1.2: Merge branch 'dev'
Diffstat (limited to 'Hutch/Networking/SRHTClient.swift')
| -rw-r--r-- | Hutch/Networking/SRHTClient.swift | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Hutch/Networking/SRHTClient.swift b/Hutch/Networking/SRHTClient.swift index a24fe24..6032cab 100644 --- a/Hutch/Networking/SRHTClient.swift +++ b/Hutch/Networking/SRHTClient.swift @@ -435,6 +435,9 @@ final class SRHTClient: Sendable { guard let token = _token.withLock({ $0 }), !token.isEmpty else { throw SRHTError.unauthorized } + guard Self.isTrustedAuthenticatedTextURL(url) else { + throw SRHTError.invalidAuthenticatedURL(url) + } var request = URLRequest(url: url) request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") @@ -512,6 +515,17 @@ final class SRHTClient: Sendable { // MARK: - Data Helper +private extension SRHTClient { + static func isTrustedAuthenticatedTextURL(_ url: URL) -> Bool { + guard url.scheme?.localizedCaseInsensitiveCompare("https") == .orderedSame, + let host = url.host?.lowercased() else { + return false + } + + return host.hasSuffix(".sr.ht") + } +} + private extension Data { mutating func append(_ string: String) { if let data = string.data(using: .utf8) { |
