From 285b48a9e8b015b5c53d7c649a7fd268aed5994e Mon Sep 17 00:00:00 2001 From: Khushboo Verma <43381712+vermakhushboo@users.noreply.github.com> Date: Mon, 12 Aug 2024 15:39:35 +0530 Subject: [PATCH] Replace regex with ctype function --- src/Appwrite/Functions/Validator/Headers.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Appwrite/Functions/Validator/Headers.php b/src/Appwrite/Functions/Validator/Headers.php index febaf73cd7..0d41493509 100644 --- a/src/Appwrite/Functions/Validator/Headers.php +++ b/src/Appwrite/Functions/Validator/Headers.php @@ -53,20 +53,24 @@ class Headers extends Validator if (\is_array($value)) { foreach ($value as $key => $val) { + $length = \strlen($key); // Reject non-string keys - if (!\is_string($key) || \strlen($key) === 0) { + if (!\is_string($key) || $length === 0) { return false; } - // Check if the key is a single character and ensure it is an alphabetic character - if (\strlen($key) === 1 && !preg_match('/^[a-zA-Z]$/', $key)) { + // Check first and last character + if (!ctype_alnum($key[0]) || !ctype_alnum($key[$length - 1])) { return false; } - // Check for invalid characters in keys longer than one character - if (\strlen($key) > 1 && !preg_match('/^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$/', $key)) { - return false; + // Check middle characters + for ($i = 1; $i < $length - 1; $i++) { + if (!ctype_alnum($key[$i]) && $key[$i] !== '-') { + return false; + } } + // Check for x-appwrite- prefix if (str_starts_with($key, 'x-appwrite-')) { return false;