From 325cbe9c2c13634a87755c52f979108e1124ed1f Mon Sep 17 00:00:00 2001 From: Kharec Date: Tue, 11 Nov 2025 16:10:20 +0100 Subject: [PATCH] refactor: validateURLForSSRF() --- internal/services/url_metadata_service.go | 28 ++++++----------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/internal/services/url_metadata_service.go b/internal/services/url_metadata_service.go index 9492b97..e8ea145 100644 --- a/internal/services/url_metadata_service.go +++ b/internal/services/url_metadata_service.go @@ -450,38 +450,24 @@ func (s *URLMetadataService) optimizedTitleClean(title string) string { } func (s *URLMetadataService) validateURLForSSRF(u *url.URL) error { - if u == nil { + switch { + case u == nil, + u.Scheme != "http" && u.Scheme != "https", + u.Host == "", + u.Hostname() == "", + isLocalhost(u.Hostname()): return ErrSSRFBlocked } - if u.Scheme != "http" && u.Scheme != "https" { - return ErrSSRFBlocked - } - - if u.Host == "" { - return ErrSSRFBlocked - } - - hostname := u.Hostname() - if hostname == "" { - return ErrSSRFBlocked - } - - if isLocalhost(hostname) { - return ErrSSRFBlocked - } - - ips, err := s.resolver.LookupIP(hostname) + ips, err := s.resolver.LookupIP(u.Hostname()) if err != nil { return ErrSSRFBlocked } - for _, ip := range ips { if isPrivateOrReservedIP(ip) { return ErrSSRFBlocked } } - return nil }