FIX Filtering the HTTP Header "Accept-Language".
This commit is contained in:
parent
9cfe1262bd
commit
c53be23122
@ -88,11 +88,12 @@ class Translate
|
|||||||
|
|
||||||
if (empty($srclang) || $srclang == 'auto')
|
if (empty($srclang) || $srclang == 'auto')
|
||||||
{
|
{
|
||||||
|
// $_SERVER['HTTP_ACCEPT_LANGUAGE'] can be 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,it;q=0.6' but can contains also malicious content
|
||||||
$langpref=empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])?'':$_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
$langpref=empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])?'':$_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
||||||
$langpref=preg_replace("/;([^,]*)/i", "", $langpref);
|
$langpref=preg_replace("/;([^,]*)/i", "", $langpref); // Remove the 'q=x.y,' part
|
||||||
$langpref=str_replace("-", "_", $langpref);
|
$langpref=str_replace("-", "_", $langpref);
|
||||||
$langlist=preg_split("/[;,]/", $langpref);
|
$langlist=preg_split("/[;,]/", $langpref);
|
||||||
$codetouse=$langlist[0];
|
$codetouse=preg_replace('/[^_a-zA-Z]/', '', $langlist[0]);
|
||||||
}
|
}
|
||||||
else $codetouse=$srclang;
|
else $codetouse=$srclang;
|
||||||
|
|
||||||
|
|||||||
@ -130,6 +130,24 @@ class SecurityTest extends PHPUnit\Framework\TestCase
|
|||||||
print __METHOD__."\n";
|
print __METHOD__."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testSetLang
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function testSetLang()
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
$conf=$this->savconf;
|
||||||
|
|
||||||
|
$tmplangs = new Translate('', $conf);
|
||||||
|
|
||||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "' malicious text with quote";
|
||||||
|
$tmplangs->setDefaultLang('auto');
|
||||||
|
print __METHOD__.' $tmplangs->defaultlang='.$tmplangs->defaultlang."\n";
|
||||||
|
$this->assertEquals($tmplangs->defaultlang, 'malicioustextwithquote_MALICIOUSTEXTWITHQUOTE');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* testGETPOST
|
* testGETPOST
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user