2012-10-17 2 views
0

고객의 쿼리를 테스트하고 흥미로운 질문을 발견했습니다. 나쁜 의도는 해커의 SQL은 다음과 같은 쿼리를 삽입 할 수 :SQL 삽입 및 여러 줄 주석

field1 like '%$searchterm%' 
: 예를 들어

SELECT * FROM mytable WHERE 1 
AND cfield='0' 
AND (
field1 like '%$searchterm%' OR 
field2 like '%$searchterm%' OR 
) 

을, 내 마음에, 그는 처음 $의 SEARCHTERM 후 무엇 주석, 그냥 다른 쿼리를 삽입 할 수있는 방법은 없습니다

그래도 나는 틀릴 수도 있습니다. 귀하의 의견을 기다리고 있습니다. 미리 감사드립니다.

+0

$ searchterm이 서버에 연결되어 있습니까? _looks_는 PHP를 좋아합니다. – driis

+0

연결이 전혀 없습니다. 검색 입력에 입력 된 내용이 모두 삽입됩니다. 제자리에 위생 처리가 없습니다. – Kyprulez

+2

그 대답은 "예"입니다. – LittleBobbyTables

답변

4
searchterm = "');drop table customers;SELECT * FROM mytable WHERE (field1 like '" 
+0

감사합니다. 자세한 예제는 나는 그러한 주사가 아무것도 망치기 전에 투입물을 살균하는 것에 조심할 것이다. – Kyprulez

+2

아무 것도 위생 할 필요가 없습니다. 준비된 진술을 사용하십시오. –

5

대신을 시도 :searchterm이 whateter 채워 입력 매개 변수입니다

SELECT * FROM mytable WHERE 1 
AND cfield='0' 
AND (
field1 like '%' || :searchterm || '%' OR 
field2 like '%' || :searchterm || '%' OR 
) 

이 ... 당신의 마음에 드는 언어 제안을 작동합니다.

+0

오, 좋아, 너의 요점을 잡았어! 이것은 매우 유용합니다. 고맙습니다! – Kyprulez

+3

제 의견으로는 이것이 올바른 접근 방법입니다. 말린은 멋진 그래픽 예제로 upvoted된다. –

관련 문제