현재 회사 및 보안상의 이유로 MVC 스타일 프레임 워크에서 작업 중입니다. 쿼리 문자열을 통해 전달 된 컨트롤러/메소드가 RFC에 유효한 문자인지 확인해야합니다 나는 찾을 수 없다).정규식을 사용하여 클래스/메소드 이름 유효성 검사
class SomEFunk__YClAssName extends Controller
{
}
내가 SomEFunk__YClAssName
을 확인하고 소독합니다 정규식의 일종이 필요합니다
나는 PHP 인터프리터 예를 들어
에 의해 허용 있는지에 따라 클래스 이름을 살균/검증 할 수 있어야합니다 필요하다면! 이것은 또한 방법과 같은 원리입니다.
는 몇 가지 같은
- 메릭스
- 특정 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;
}
당신은 확인이 필요한 주석 "살균"가 표시됩니다 : 나는 그것을 구현하기 위해 필요로하는 곳에 당신이 볼 수 있도록
여기 공유기 코드의 일부이다.
코드 예제 및 문서 링크를 제공해 주셔서 감사합니다. 나는 이것을 대답으로 표시했을 것이다. – Xunnamius
**주의 ** : 시작/끝 구분 기호가 없으므로'preg_match'에 결함이 있다고 생각합니다. '$ input = "확실히 유효한 클래스 명이 아님!"으로 표시된 코드는 1을 반환합니다.'preg_match ('/^[a-zA-Z_ \ x7f- \ xff] [a-zA- $ input/$ input); 그것은 0을 반환합니다. –
시작/끝 구분 기호에 대한 호출이 좋습니다. – nate