[php] 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


답변

조금 늦었지만 같은 문제에 대한 해결책을 찾는 동안이 질문을 보았으므로 도움이되기를 바랍니다.

당신과 같은 어둠 속에서 나를 찾았습니다. 다음을 포함하여 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 문서가 있습니다.

http://www.php.net/manual/en/function.filter-input.php

http://www.php.net/manual/en/filter.filters.php


답변

대부분의 경우 (거의 항상) 귀하의 입력 내용을 삭제해야한다는 다른 답변자들의 의견에 동의합니다.

그러나 다음 코드를 고려하십시오 (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);

주의 : 다른 모든 슈퍼 글로벌 변수에 적용


답변

다음은 NetBeans에서 경고를 표시 한 코드의 일부입니다.

$page = (!empty($_GET['p'])) 

많은 연구와이 배열을 필터링하는 방법이 얼마나 많은지 확인한 끝에 간단한 방법을 찾았습니다. 내 코드가 작동하고 NetBeans가 행복합니다.

$p = filter_input(INPUT_GET, 'p');
$page = (!empty($p))


답변