@@ -1541,34 +1541,6 @@ export function validateServiceNowInstanceUrl(
15411541 return { isValid : true , sanitized : url as string }
15421542}
15431543
1544- /**
1545- * Validates an Agiloft instance URL to prevent SSRF attacks.
1546- *
1547- * Agiloft is offered both as a hosted SaaS (instances on `*.agiloft.com`,
1548- * including regional subdomains) and as a self-hosted on-premise / private
1549- * cloud deployment. Customers in the self-hosted tier point Sim at their own
1550- * domain, so a fixed hostname allowlist is not viable. This validator therefore
1551- * enforces only the surface-level guarantees (HTTPS, public hostname, no
1552- * blocked ports), matching `validateExternalUrl`.
1553- *
1554- * IMPORTANT: This synchronous check does NOT resolve DNS, so it cannot stop a
1555- * hostname that resolves to a private/loopback address or a DNS-rebinding
1556- * attacker. Server-side callers that subsequently issue an HTTP request to the
1557- * instance MUST also call `validateUrlWithDNS` and use `secureFetchWithPinnedIP`
1558- * (or `secureFetchWithValidation`) from `input-validation.server.ts` so the
1559- * fetch is pinned to the validated IP.
1560- *
1561- * @param url - The Agiloft instance URL to validate
1562- * @param paramName - Name of the parameter for error messages
1563- * @returns ValidationResult
1564- */
1565- export function validateAgiloftInstanceUrl (
1566- url : string | null | undefined ,
1567- paramName = 'instanceUrl'
1568- ) : ValidationResult {
1569- return validateExternalUrl ( url , paramName )
1570- }
1571-
15721544const WORKDAY_ALLOWED_HOST_SUFFIXES = [ '.workday.com' , '.myworkday.com' ] as const
15731545
15741546/**
0 commit comments