Как заблокировать инъекции SQL в CAKEphp - PullRequest
4 голосов
/ 09 ноября 2010

Как заблокировать инъекции sql со страницы, подобной этой ... http://u.neighborrow.com/items/recent

Ответы [ 3 ]

17 голосов
/ 09 ноября 2010

CakePHP уже защищает вас от SQL-инъекций, если вы используете методы ORM в CakePHP (такие как find () и save ()) и правильную запись массива (т. Е. Array ('field' => $ value)) вместо необработанного SQL. Для очистки от XSS обычно лучше сохранять необработанный HTML в базе данных без изменений и выполнять очистку во время вывода / отображения.

Это должно дать вам хорошее представление о том, как это сделать.

App::import('Sanitize'); 
class MyController extends AppController {     ...     ... } 

Как только вы это сделаете, вы можете делать статические звонки в Sanitize.

5 голосов
/ 09 ноября 2010

CakePHP позаботится об этом. Прочитайте их книгу .

3 голосов
/ 12 мая 2012

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

Необработанный запрос:

$this->User->query("select username from users where email='$email_received_from_user_form'");

перед выполнением, что вам нужно:

App::import('Sanitize');

$email_received_from_user_form = Sanitize::paranoid($email_received_from_user_form, array('@', '_', '-', '.'));

При правильной очистке данных удаляются / редактируются все вредоносные символы в запросе (без SQL-инъекций).

Смотрите здесь: http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html

После того, как вы узнаете все о санации данных, старайтесь никогда не использовать ее. Используйте CakePHP так:

$this->User->field('username', array('email' => $email_received_from_user_form));

В этом случае вам вообще не нужно беспокоиться об SQL-инъекциях. Вы никогда не должны использовать необработанные запросы, если у вас нет другого выбора.

...