1. is_numberic 함수 소개
is_numberic 함수는 일부 국내 CMS 프로그램에서 사용됩니다. 먼저 이 함수의 구조를 살펴보겠습니다
bool is_numeric (mixed $var)
var가 숫자 또는 숫자 문자열이면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
2. 이 함수는 안전한가요?
다음으로 이 함수가 안전한지 예시를 살펴보겠습니다.
$s = is_numeric($_GET['s'] )?$ _GET['s']:0;
$sql="insert into test(type)values($s);" //values('$s'가 아니라 값($s)입니다. )
mysql_query ($sql);
위 조각 프로그램은 매개변수 s가 숫자인지 여부를 확인하는 것입니다. 숫자이면 숫자를 반환하고, 그렇지 않으면 0을 반환합니다. 그런 다음 쿼리를 위해 데이터베이스로 가져옵니다. (이런 식으로는 sql 문을 구성할 수 없습니다)
s 매개변수의 값으로 '1 또는 1'을 16진수 0x31206f722031로 변환합니다
프로그램 실행 후 아래와 같이 데이터베이스를 쿼리합니다.
이 테이블의 필드를 다시 쿼리하고 필터링하지 않고 다른 SQL 문을 가져오면 두 번의 삽입이 발생합니다.
3. 시도하지 마세요. 이 기능을 사용하려면 표준 SQL 문을 사용하고 조건에 작은따옴표를 추가하여 16진수 0x31206f722031이 데이터베이스에 표시되도록 하는 것이 좋습니다. 1도 1도 없을 것입니다.