. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\UserSecurity\Password\Recovery; use const FILTER_VALIDATE_URL; use const PHP_URL_HOST; /** * @internal */ class UrlValidatorUtil { public static function validate(string $url, string $siteUrl): bool { $host = parse_url($url, PHP_URL_HOST); $siteHost = parse_url($siteUrl, PHP_URL_HOST); if ($host !== $siteHost) { return false; } if (!filter_var($url, FILTER_VALIDATE_URL)) { return false; } if (!str_starts_with($url, $siteUrl)) { return false; } return true; } }