코드 삽입 가능성이 있는지 알고 싶습니다. (예 : 메모리 블록 읽기와 같은 보안상의 위험이 있습니다. 다음 시나리오에서 비화 데이터 (HTTP GET )은의 코드에서 배열의 KEY로 사용됩니다.PHP 배열 키 값으로 사용되는 HTTP GET 데이터의 PHP 삽입
문자를 알파벳 순서로 변환해야합니다. 2 B 1에, C 3 .... HTTP GET 당신은 아무것도 이해할 수있는 값의 편지를 가지고 있지만, 할을 생각 "문자"변수는 서버로 보낼 수 있습니다
HTML :
http://www.example.com/index.php?letter=[anything in here, as dirty it can gets]
PHP :
$dirty_data = $_GET['letter'];
echo "Your letter's order in alphabet is:".Letter2Number($dirty_data);
function Letter2Number($my_array_key)
{
$alphabet = array("a" => "1", "b" => "2", "c" => "3");
// And now we will eventually use HTTP GET unsanitized data
// as a KEY for a PHP array... Yikes!
return $alphabet[$my_array_key];
}
질문 :
- 당신이 어떤 보안 위험을 볼 수 있습니까?
- HTTP 데이터를 배열의 KEY처럼 코드에서 사용할 수 있도록 위생 처리하는 방법은 무엇입니까?
- 이 연습은 얼마나 나쁜가요?
참조 http://stackoverflow.com/questions/7341034/avoiding-xss-when-echoing-posted-html – powtac
그것은 정확히이 코드의 보안 위험하지만,이 Letter2Number 추한 뭔가를 반환 할 수 있습니다 명심 것 이론적으로 코드의 다른 곳에서 보안 위험이 될 수있는 'NULL'과 같습니다. – someone