PHP безопасность с Joomla - PullRequest
       1

PHP безопасность с Joomla

0 голосов
/ 28 марта 2012

Будучи новичком, я думал, что понимаю, что делать с точки зрения безопасности, но мне все еще нужна помощь.

У меня есть форма, которая учитывает множество деталей камеры. Например, имя камеры и ряд других параметров, которые являются частью HTML select. Я обрабатываю это в php:

$db = &JFactory::getDBO();

if (isset($_POST['addcamera'])) {

    //process changes to camera options 
    if ( !empty($_POST['camera_type']) && !empty($_POST['camera_status']) && !empty($_POST['camera_name']) && !empty($_POST['camera_quality']) && !empty($_POST['email_notice']) )
    {       
        $add_name = JRequest::getVar('camera_name', 'Default Camera', 'post', 'STRING');
        $add_quality = JRequest::getVar('camera_quality', '', 'post', 'STRING');
        $add_motion_detection = JRequest::getVar('camera_status', '', 'post', 'STRING');
        $add_email_notice = JRequest::getVar('email_notice', '', 'post', 'STRING');
        $camera_type = JRequest::getVar('camera_type', '', 'post', 'STRING');
        //and so on...

        //then I add to DB
        $query_insert_camera = "INSERT INTO #__cameras (camera_status, camera_name, camera_quality, email_notice, camera_type, camera_hash, camera_sensitivity, user_id) VALUES ('".$add_motion_detection."','".$add_name."','".$add_quality."','".$add_email_notice."','".$camera_type."','".$add_camera_hash."','".$add_sensitivity."','".$user->id."')";
        $db->setQuery($query_insert_camera);
        $db->query();

Я использую проверку jquery для своих форм и со стороны php, поскольку я использую Joomla. Я использую getVar: http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar. Я считаю, что я защищаю себя от атак XSS и SQL, но могу кто-то подтвердит, что это правильный подход?

Что-нибудь еще мне не хватает?

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Мне кажется, что вы широко открыты для SQL-инъекций или я что-то упустил.

Что произойдет, если кто-то передаст имя камеры по линии

foo';EVIL_SQL_HERE;

Насколько я вижу, вы выполните там SQL, который соответствует критериям STRING.

Я думаю, вам нужно использовать функцию $ db-> getEscaped () для каждой из переменных, сгенерированных из пользовательского ввода (при условии, что Joomla 1.6+) И затем $ db-> Quote (), чтобы обернуть кавычки вокруг переменных, хранится в базе данных.

Вот строка из довольно типичной модели:

$search = $db->Quote('%'.$db->getEscaped($search, true).'%');
1 голос
/ 29 марта 2012

По моему мнению, до тех пор, пока вы обновляете ядро ​​Joomla, риски меньше.

Эти ссылки могут дать вам представление не только о XSS и SQL-атаках в joomla для вашего расширения:

Вы также можете использовать один из этих плагинов для усиления вашей защиты от этих атак:

А вот код getVar, где вы можете увидеть, насколько защищен ваш сайт от внедрения SQL и XSS:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...