2014-03-04 2 views
1

На основании RFC-2616: У меня есть пользовательский интерфейс для ввода заголовков и значений заголовков. Мне нужно проверить значения. почему-то я решил проверить имена заголовков от https://github.com/rack/rack/pull/399php проверяет значение заголовка на основе RFC-2616

Любая помощь будет оценена!

ответ

1

Вот что я придумал, но еще какие-то предложения будут высоко оценены

/** 
* RFC 2616 header value http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-22.html#rfc.section.3.2.4.p.3 
* word = token/quoted-string 
* token = 1*tchar 
* tchar = "!"/"#"/"$"/"%"/"&"/"'"/"*" 
*/"+"/"-"/"."/"^"/"_"/"`"/"|"/"~" 
*/DIGIT/ALPHA 
* ; any VCHAR, except special 
* special  = "("/")"/"<"/">"/"@"/"," 
*/";"/":"/"\"/DQUOTE/"/"/"[" 
*/"]"/"?"/"="/"{"/"}" 
*/ 
private function isValidHeaderValue($value) 
{ 
    $tchar = preg_replace('/[\"][@<>?={}\[\]()\"\,\;\:\/\\\\][\"]+/', '', $value); 
    $remaining = preg_replace('/[a-zA-Z0-9\s\"!#$%&\'*+-.^_`|~]+/', '', $tchar); 
    return ($remaining) ? false : true; 
} 
+0

Позволяя процентов закодированные CRLF не вы потенциально уязвимы для CRLF инъекции на основе [HTTP Response Расщепление атаки] (HTTPS : //www.owasp.org/index.php/HTTP_Response_Splitting)? – iX3

Смежные вопросы