В настоящее время я работаю над платформой MVC Style для компании, и по соображениям безопасности мне необходимо убедиться, что контроллер / метод, который передается через строку запроса, является действительными символами для RFC (который я не могу найти).
Мне нужно иметь возможность проверять / дезинфицировать имена классов в соответствии с тем, что разрешено интерпретатором PHP
Например:
class SomEFunk__YClAssName extends Controller
{
}
Мне нужно какое-то регулярное выражениеэто подтвердит SomEFunk__YClAssName
и очистит его, если это будет необходимо!Это также те же принципы, что и методы.
Есть несколько вещей, которые следует учитывать, например:
- Числа в начале
- Разрешены только подчеркивания
- Допускаются некоторые специальные PHP-символы.
Любая информация об этом или возможных выражениях будет очень полезна.
Вот часть моего кода маршрутизатора, так что вы можете увидетьгде мне нужно это реализовать:
private function prepareQueryString()
{
if(strlen($this->query_string) == 0)
{
return;
}
//Remove [ending|starting|multiple] slashes
$this->query_string = preg_replace('/^\/+|\/+$|\/(?=\/)/', '', $this->query_string);
foreach(explode('/',$this->query_string) as $Key => $Value)
{
if($Key == 0)
{
$Controller = $this->AssignController($Value);
}
if($Key == 1)
{
$this->AssignMethod($Value);
}else
{
$this->AssignParam($Value);
}
}
//Build RouterVar stdClass
}
public function AssignController(String $Controller)
{
if(!empty($Controller))
{
//Sanitize
}
}
public function AssignMethod(String $Method)
{
if(!empty($Method))
{
//Sanitize
}
}
public function AssignParam(String $Param)
{
$this->params[] = $Param;
}
Вы увидите комментарий «Санитаризация», где необходим чек.