2011-10-11 3 views
0

데이터베이스의 IP 주소를 검색하는 데 사용하는이 비트가 있습니다.검색어의 이스케이프 기간 코드 부호

$this->db->where("IP1='$ip' OR IP2='$ip'"); 

내가 사용할 때 IP 주소의 마침표를 이스케이프 처리하고이를 생성하여 쿼리를 중단합니다.

SELECT * FROM (`xxxx`) WHERE `IP1='111`.`111`.`111`.`111'` 

나는 그것을 생성 할 :

SELECT * FROM (`xxxx`) WHERE IP1='111.111.111.111' OR IP2 = '111.111.111.111' 

감사합니다! 에서

답변

2

documentation :

"$this->db->where()는 세번째 매개 변수를 받아들이는 FALSE로 설정하면 CodeIgniter의 백 틱 필드 나 테이블 명을 보호하려고하지 않을 것이다.."

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE); 

이렇게하면 변수를 sanatize하는 것이 좋습니다.

1

where 도우미의 버그 인 것 같습니다. the documentation에 따르면, 당신은 당신의 테이블/필드 이름을 탈출 CodeIgniter를 중지 FALSE의 세번째 매개 변수를 포함 할 수 있습니다 : $ip 사용자 입력에서 오는 경우

$this->db->where("IP1='$ip' OR IP2='$ip'", NULL, FALSE); 
//          ^^^^^^^^^^^^^ add this 

그러나, 당신은 더 이상이에서 SQL 주입으로부터 보호되지 않습니다 질문.

관련 문제