Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Защита против SQL injection

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Заголовок сообщения: Ответить с цитатой

Батенька - вы или защищайтесь, или не дёргайте Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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    Заголовок сообщения: Ответить с цитатой

Или:

Код:
 $id = intval($id);


Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
elsmir1973

цитировать



Зарегистрирован: 02 Июн 2010 12:23:19
Сообщения: 1
Откуда: Россия

СообщениеДобавлено: 02 Июн 2010 12:25:22    Заголовок сообщения: Ответить с цитатой

Не думаю, что можно и защититьсмя и запросы не дергать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru