programing

사용자 입력으로 json_decode를 호출해도 안전합니까?

easyjava 2023. 3. 5. 10:31
반응형

사용자 입력으로 json_decode를 호출해도 안전합니까?

쿠키에 정수 인덱스 = > 정수 값의 JSON 인코딩 배열을 저장하고 있습니다.

cookie는 다른 사용자 입력과 마찬가지로 쉽게 조작할 수 있습니다.따라서 cookie getter 검증은 다음과 같습니다.

if ($_COOKIE['myCookie']) { //if cookie exists
    $myCookie = json_decode($_COOKIE['myCookie'], true);
    if (!is_array($myCookie)) { //in case decoding fails or bad cookie
        $myCookie = array(); //sets it as empty array
    }
} else { //if cookie doesn't exist, uses an empty array instead
    $myCookie = array();
}

다음 중 하나의 값을 사용하기 전에 어레이에 해당 값이 존재하는지 확인하고 화이트리스트 값 목록과 대조하여 테스트합니다.이 부분은 매우 안전하다고 생각되지만 검증의 일부로 게시합니다.

if (!empty($myCookie[$index])) { //checks if index exists and is truthy
    if ($myCookie[$index] !== 1 && $myCookie[$index] !== 2) { //values whitelist
        die('Hacking attempt through cookies exploit.');
    }
    //use the cookie data now
}

다시 질문으로 돌아가서 쿠키에 직접 전화를 걸어도 안전한가?사용자가 쿠키를 조작하여 임의의 코드를 실행할 수 있습니까?

지금까지 SO에 관한 많은 주제를 읽었는데 제가 발견한 건unserialize()컨스트럭터를 호출하기 때문에 안전하지 않습니다만,json_decode기술적으로 안전합니다.php.net 페이지를 읽었지만 보안에 직접 대처하는 것은 아닙니다.

애드온이 곧 라이브 베타에 도달하기 때문에 전화할 수 있는지 궁금합니다.json_decodecookie에 직접 접속하면 안전합니다.혹은 전화하기 전에 어떤 종류의 검증을 실행해야 하는지 여부입니다.json_decode. 제가 할 수 있는 건preg_match하지만 사용하기 전에 가치의 화이트리스트에 대해 테스트하고 있기 때문에 문제가 없을 것입니다.json_decode어떤 식으로든 임의 코드를 실행하지만, 그렇지 않나요?

나는 그것을 알고 있습니다.json_encode돌아온다NULL유효한 JSON이 아닌 경우, 이것이 올바른 접근 방식인지 아니면 전화하기 전에 확인을 추가해야 하는지 궁금합니다.

사용.json_decode사용자 입력을 직접 디코딩하는 것은 보안에 문제가 없습니다.

문자열 구문 분석일 뿐 문자열 평가는 하지 않습니다.

json_decodephp는JSON.parsejavascript로 둘 다 사용자 입력에서 직접 사용할 수 있으므로 디코딩 시 안전합니다.

그러나 디코딩된 후에는 요구 사항에 맞는 데이터를 검증해야 합니다.

로서 불충분하다json_decode가 올바르게 실장되어 있기 때문에, 여분의 전처리 없이 사용하는 것이 안전합니다(실제로 프리프로세싱에 버그가 있을 가능성이 있기 때문에, 이것은 더 나쁜 일이 될 수 있습니다).

데이터가 json 형식이 아니면 json_display가 실패하고, 그렇지 않으면 작업할 수 있는 배열이 반환됩니다.Itay가 말한 것처럼 누군가가 이것을 이용할 수 있다면 그는 거의 들어갈 자격이 있습니다.json_decode는 SQL의 위험에 시달리지 않기 때문에 당신은 이 일을 할 수 있다고 생각합니다.

쿼리에 통합하기 전에 정리(또는 화이트리스트(이미 정리한 것처럼)를 반드시 삭제하십시오.

언급URL : https://stackoverflow.com/questions/12292029/is-it-safe-to-call-json-decode-on-user-input

반응형