Kohana 2.3.4 ORM sql защита от впрыска - PullRequest
1 голос
/ 14 декабря 2010

Кохана упоминает, что они используют mysql_real_escape_string для очистки входных данных базы данных в своей документации.Однако, пробуя некоторые основные запросы через форму, они были введены в базу данных именно так, как я их ввел.Например:

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

вводится в эти данные MySQL точно так, как они появляются.Я ожидал увидеть:

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

Я использую библиотеку ORM вместо базы данных, но я знаю, что они работают вместе.Также я использую встроенную библиотеку ввода ($ this-> input-post) для сбора данных из форм.Я не менял никаких контроллеров или библиотек, которые относятся к безопасности.

Я еще не прочесал исходный код, но удаляет ли Kohana строку и удаляет ли косую черту перед вводом в поле базы данных?Я несколько уверен, что это так, но я хочу быть уверенным.

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

Когда вы избегаете запроса SQL, вы экранируете литеральные данные, чтобы они не конфликтовали с синтаксисом SQL, например, чтобы апострофы не интерпретировались как разделители строк. MySQL может хранить неэкранированные апострофы и все остальное на самом деле без необходимости сохранения данных с тактическим экранированием. Было бы ошибкой хранить данные в их экранированном виде, чтобы вам пришлось снова удалять их после получения.

Хотя я не знаком с Kohana, вы можете быть уверены, что он обрабатывает ваш ввод правильно, если вы попросили его сохранить запрос и он вернул вам точно такой же запрос.

2 голосов
/ 14 декабря 2010

Kohana ORM автоматически защищает вас от внедрения SQL.

...