2012-01-02 2 views
4

is_numeric은 SQL injection 공격을 막을만큼 충분히 안전하다고 가정 할 수 있습니까? 또는 is_numeric을 통해 전달할 수있는 SQL 삽입 메소드가 있습니까?은 SQL 주입이 is_numeric 함수를 통해 가능합니까?

+5

아마도 안전 할 것입니다. 하지만 준비된 진술 (PDO)을 사용하지 않는 이유는 아닙니다. –

답변

5

가 제공 단지를 수행합니다 : 당신이 is_numeric 기능의 오버 헤드를 피할 수

$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;

이 방법. 두 방법 모두 주입을 피하기에 충분합니다 (is_numeric이 FALSE를 반환하면 데이터에 대해 작업하는 한). 삼항 연산자는 또한 문제의 $ _GET 변수가 존재하지 않으면 E_NOTICE를 얻지 못하도록합니다.

+0

함수 호출의 오버 헤드가 삼항 연산자와 얼마나 비교되는지 설명 할 수 있습니까? – KingCrunch

+0

@KingCrunch : 반드시이 방법을 사용하고 싶지는 않습니다. 입력을 확인할 기회가 없습니다. –

+0

@KingCrunch 필자는 '오버 헤드'논쟁이 종교적 괴상한 전쟁을 시작할 수 있음을 알고 있지만, 불필요한 함수 호출을 피하는 것이 어떻게 나쁠 수 있는지를 보지 못했습니다. – rdlowrey

3

intval 또는 floatval을 사용할 수 있습니다. 당신은 더 나은 것

3

아니요, 없습니다. 그러나 예를 들어 is_numeric('0xaf5') == true을 상기시켜주세요. 따라서 달성하고자하는 바에 따라 충분하지 않을 수도 있습니다.

관련 문제