![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-http/src/Header/ |
<?php namespace Laminas\Http\Header; use function ord; use function strlen; final class HeaderValue { /** * Private constructor; non-instantiable. */ private function __construct() { } /** * Filter a header value * * Ensures CRLF header injection vectors are filtered. * * Per RFC 7230, only VISIBLE ASCII characters, spaces, and horizontal * tabs are allowed in values; only one whitespace character is allowed * between visible characters. * * @see http://en.wikipedia.org/wiki/HTTP_response_splitting * * @param string $value * @return string */ public static function filter($value) { $value = (string) $value; $length = strlen($value); $string = ''; for ($i = 0; $i < $length; $i += 1) { $ascii = ord($value[$i]); // Non-visible, non-whitespace characters // 9 === horizontal tab // 32-126, 128-254 === visible // 127 === DEL // 255 === null byte if ( ($ascii < 32 && $ascii !== 9) || $ascii === 127 || $ascii > 254 ) { continue; } $string .= $value[$i]; } return $string; } /** * Validate a header value. * * Per RFC 7230, only VISIBLE ASCII characters, spaces, and horizontal * tabs are allowed in values; only one whitespace character is allowed * between visible characters. * * @see http://en.wikipedia.org/wiki/HTTP_response_splitting * * @param string $value * @return bool */ public static function isValid($value) { $value = (string) $value; $length = strlen($value); for ($i = 0; $i < $length; $i += 1) { $ascii = ord($value[$i]); // Non-visible, non-whitespace characters // 9 === horizontal tab // 32-126, 128-254 === visible // 127 === DEL // 255 === null byte if ( ($ascii < 32 && $ascii !== 9) || $ascii === 127 || $ascii > 254 ) { return false; } } return true; } /** * Assert a header value is valid. * * @param string $value * @throws Exception\RuntimeException For invalid values. * @return void */ public static function assertValid($value) { if (! self::isValid($value)) { throw new Exception\InvalidArgumentException('Invalid header value'); } } }