source

PHP용 Netbeans 7.4에서 "Do not Access Superglobal $_POST Array Direct" 경고

factcode 2022. 12. 5. 21:14
반응형

PHP용 Netbeans 7.4에서 "Do not Access Superglobal $_POST Array Direct" 경고

$_POST, $_GET, $_SERVER 등을 사용하는 동안 Netbeans 7.4 for PHP에서 이 메시지가 나타납니다.

Superglobal $_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

이것이 추가된 이유는 슈퍼글로벌은 보통 사용자 입력으로 채워져 있기 때문에 절대 맹목적으로 믿어서는 안 됩니다.대신, 어떤 종류의 필터링을 해야 합니다.그것이 힌트입니다.superglobal 값에 포이즈닝된 콘텐츠가 있는 경우 필터링합니다.

예를 들어, 내가 있었던 곳:

$_SERVER['SERVER_NAME']

대신 다음과 같이 했습니다.

filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)

filter_input 및 filters doc은 다음과 같습니다.

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();
}

여기서 소독을 하는 것은 별로 도움이 되지 않습니다(아무것도 망가뜨리지 않습니다).

따라서 권장사항을 따르되 맹목적으로 따르지는 마십시오. 오히려 권장사항이 왜 적합한지 이해하십시오.

그냥 사용하다

filter_input(INPUT_METHOD_NAME, 'var_name')대신$_INPUT_METHOD_NAME['var_name'] filter_input_array(INPUT_METHOD_NAME)대신$_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);

N.B: 다른 모든 Super Global 변수에 적용

다음은 NetBeans에서 경고를 발생시킨 코드의 일부입니다.

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

이 어레이를 필터링할 수 있는 방법이 수없이 많은지 많은 연구 끝에 간단한 것을 발견했습니다.그리고 내 코드는 작동하고 NetBeans는 행복하다.

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

언급URL : https://stackoverflow.com/questions/19767894/warning-do-not-access-superglobal-post-array-directly-on-netbeans-7-4-for-ph

반응형