2010-12-14 8 views
1

Kohana는 mysql_real_escape_string을 사용하여 설명서에서 데이터베이스 입력을 위생적으로 처리한다고 언급합니다. 그러나 양식을 통해 몇 가지 기본 쿼리를 시음하는 동안 입력 한대로 데이터베이스에 입력되었습니다. 예를 들면 다음과 같습니다.Kohana 2.3.4 ORM sql injection protection

SELECT * FROM users WHERE username='admin' AND password='' OR ''='' 

은 표시된대로 정확하게 그 mysql 데이터에 입력됩니다. 나는 데이터베이스 대신 ORM 라이브러리를 사용하고

SELECT * FROM users WHERE username=\'admin\' AND password=\'\' OR \'\'=\'\' 

,하지만 난 그들이 함께 일을 알고 : 내가보고 기다리고 있었다. 또한 양식에서 데이터를 수집하기 위해 내장 된 입력 라이브러리 ($ this-> input-post)를 사용하고 있습니다. 나는 보안과 관련된 컨트롤러 나 라이브러리를 변경하지 않았다.

나는 아직 소스 코드를 빗질하지 않았지만 Kohana가 문자열을 이스케이프 처리 한 다음 db 필드에 입력하기 전에 슬래시를 제거합니까? 나는 이것이 사실 일 것이라고 확신하지만 확신하고 싶다.

감사

답변

3

SQL 쿼리를 이스케이프하면 리터럴 데이터가 SQL 구문과 충돌하지 않도록 이스케이프 처리됩니다. 예를 들어 아포스트로피가 문자열 구분 기호로 해석되지 않도록 할 수 있습니다. MySQL은 이스케이프와 함께 저장할 필요가없는 데이터를 이스케이프 처리하지 않고 저장할 수 있습니다. 데이터를 가져온 후에 다시 이스케이프 처리해야하므로 이스케이프 처리 된 형식으로 데이터를 저장하는 것은 실수입니다.

Kohana에 익숙하지 않지만 질의를 저장하라는 요청을 정확하게 입력하면 정확한 입력을 처리 할 수 ​​있으므로 안심 하셔도됩니다.

+0

자세한 답변 해 주셔서 감사합니다. – anthony

2

Kohana ORM 자동으로 SQL 주입으로부터 당신을 보호합니다.