Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dmitry84
цитировать
Зарегистрирован: 25 Ноя 2009 14:19:15 Сообщения: 8
|
Добавлено: 12 Апр 2010 19:00:48 Заголовок сообщения: Защита против SQL injection |
|
|
здравствуйте!
Насколько я понял из документации Cake обрабатывает все $_POST и $_GET запросы, и можно смело подставлять параметры в find() и save().
Но что делать если необходимо использовать query().
Например
$this->MyController->query("UPDATE photos SET profile_pic='1', status = 'public' WHERE id=".$id." AND profile_id=".$this->Session->read('Profile.id'));
$id в данном случае берется из $this->data...
Будет ди такой запрос устойчив к SQL Injection?
И как защитится от такого глобально, а не дергать mysql_real_escape_string или sanitize->clean() перед каждым запросом. |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 13 Апр 2010 19:55:49 Заголовок сообщения: |
|
|
Батенька - вы или защищайтесь, или не дёргайте |
|
Вернуться к началу |
|
|
dmitry84
цитировать
Зарегистрирован: 25 Ноя 2009 14:19:15 Сообщения: 8
|
Добавлено: 19 Апр 2010 18:21:31 Заголовок сообщения: |
|
|
хм.. спасибо за ответ, просто слишком много менять пришлось.
на тек момент я переписал многие запросы на cake запрсы (через read() /find())
также добавил проверку на приходящие параметры.
У меня в проекте очень много ссылок бла/бла/id
где id всегда положительное число.
для этого паписали компонент вот с такое проверкой:
Код: | function checkIntUnsigned($var, $withZero = false)
{
//forse type set
if (is_numeric($var))
settype($var, 'int');
else
return false;
//var_dump(is_int($var));
if (is_int($var) == true)
{
if ($withZero == false)
{
if ($var > 0 )
return true;
else
return false;
}
else // with_zero = true
{
if ($var >= 0)
{
// echo "ok >=0 ";
return true;
}
}
}
return false;
} |
Всем спасибо за отзывы и комменты.[/code] |
|
Вернуться к началу |
|
|
nws
цитировать
Зарегистрирован: 25 Фев 2008 15:42:23 Сообщения: 96
|
Добавлено: 26 Апр 2010 14:05:59 Заголовок сообщения: |
|
|
что за порно ты написал ? ))
Код: | <?php
function vd($expression) {
var_dump($expression);
}
function check($var, $allow_zero = false) {
if ( !is_int($var) ) {
return false;
} else {
if ( $allow_zero ) {
return ( $var >= 0 ) ? true : false;
} else {
return ( $var > 0 ) ? true : false;
}
}
}
echo '<pre>';
vd( check('a') );
vd( check(1.1) );
vd( check('1') );
vd( check(1) );
vd( check(0) );
vd( check(0, true) );
echo '</pre>';
?> |
а если CakeWay:
Код: |
$id = Sanitize::paranoid($id); |
или
http://api.cakephp.org/view_source/sanitize/#line-170 |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 26 Апр 2010 20:14:46 Заголовок сообщения: |
|
|
Или:
|
|
Вернуться к началу |
|
|
elsmir1973
цитировать
Зарегистрирован: 02 Июн 2010 12:23:19 Сообщения: 1 Откуда: Россия
|
Добавлено: 02 Июн 2010 12:25:22 Заголовок сообщения: |
|
|
Не думаю, что можно и защититьсмя и запросы не дергать |
|
Вернуться к началу |
|
|
|