$ _POST , $ _GET , $ _SERVER , ...를 사용하는 동안 PHP 용 Netbeans 7.4에서이 메시지가 표시됩니다 .
수퍼 글로벌 $ _POST 어레이에 직접 액세스하지 마십시오.
무슨 뜻인가요? 이 경고를 수정하려면 어떻게해야합니까?
편집 : 이벤트 샘플 코드는 여전히이 경고를 표시합니다.
$ _POST , $ _GET , $ _SERVER , ...를 사용하는 동안 PHP 용 Netbeans 7.4에서이 메시지가 표시됩니다 .
수퍼 글로벌 $ _POST 어레이에 직접 액세스하지 마십시오.
무슨 뜻인가요? 이 경고를 수정하려면 어떻게해야합니까?
편집 : 이벤트 샘플 코드는 여전히이 경고를 표시합니다.
답변:
filter_input(INPUT_POST, 'var_name')
대신 $_POST['var_name']
filter_input_array(INPUT_POST)
대신$_POST
$name = filter_input(INPUT_POST, $_POST["name"]);
.
filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_NUMBER_INT)
조금 늦었지만 같은 문제에 대한 해결책을 찾는 동안이 질문을 보았으므로 도움이되기를 바랍니다.
당신과 같은 어둠 속에서 나를 찾았습니다. 다음을 포함하여 NetBeans 7.4에 도입 된 몇 가지 새로운 힌트를 설명하는이 기사를 방금 찾았습니다.
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
추가 된 이유는 수퍼 글로벌이 일반적으로 사용자 입력으로 채워져 맹목적으로 신뢰할 수 없기 때문입니다. 대신, 어떤 종류의 필터링이 수행되어야하며, 그것이 힌트가 암시하는 것입니다. 감염된 콘텐츠가있는 경우 슈퍼 글로벌 값을 필터링합니다.
예를 들어, 내가 가진 곳 :
$_SERVER['SERVER_NAME']
대신 넣었습니다.
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
여기에 filter_input 및 filters 문서가 있습니다.
대부분의 경우 (거의 항상) 귀하의 입력 내용을 삭제해야한다는 다른 답변자들의 의견에 동의합니다.
그러나 다음 코드를 고려하십시오 (REST 컨트롤러 용).
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
return $this->doGet($request, $object);
case 'POST':
return $this->doPost($request, $object);
case 'PUT':
return $this->doPut($request, $object);
case 'DELETE':
return $this->doDelete($request, $object);
default:
return $this->onBadRequest();
}
여기에 살균을 적용하는 것은 그다지 유용하지 않습니다 (아무것도 깨지지는 않지만).
따라서 권장 사항을 따르되 맹목적으로는 아닙니다.
그냥 사용
$ _INPUT_METHOD_NAME [ 'var_name'] 대신 filter_input (INPUT_METHOD_NAME, 'var_name') $ _INPUT_METHOD_NAME 대신 filter_input_array (INPUT_METHOD_NAME)
예 :
$host= filter_input(INPUT_SERVER, 'HTTP_HOST');
echo $host;
대신에
$host= $_SERVER['HTTP_HOST'];
echo $host;
그리고 사용
var_dump(filter_input_array(INPUT_SERVER));
대신에
var_dump($_SERVER);
주의 : 다른 모든 슈퍼 글로벌 변수에 적용