Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

sql injection


PoliteX

Recommended Posts

Добрый день, сегодня в журнале ошибок сайте заметил следующее
 

2016-03-10 4:09:18 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:18 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:19 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:19 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:19 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:19 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:19 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:20 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:20 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:20 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:20 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:20 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:21 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:21 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:21 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:21 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:22 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:22 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:22 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:22 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:22 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:23 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:23 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45),CHAR(45,120,50,52,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50
2016-03-10 4:09:23 - PHP Notice: Error: The used SELECT statements have a different number of columns
Error No: 1222
SELECT category_id FROM oc_product_to_category WHERE product_id = '331331111111111111' UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45),CHAR(45,120,50,52,45,81,45),CHAR(45,120,50,53,45,81,45) -- /* order by 'as /*' in /price/public_html/system/database/mysql.php on line 50


 
стоит ли беспокоиться?  был ли взлом?
ocStore Версия 1.5.5.1.2

  • +1 4
Надіслати
Поділитися на інших сайтах


странно - в стандартных файлах product_id экранирован через int в данном запросе

 

смотреть логи сервера, как минимум блокировать ip с которого идет обращение

и искать - такое ощущение что в каком-то из модулей брешь

Надіслати
Поділитися на інших сайтах

Однозначно вас пробили и только вопрос времени когда найдут решение подюнить свой код

Вопрос в другом как это получилось, там же экранирование в opencart  (int) стоит ? !

 

Это видно SQL запрос из какого то модуля, и там забыли экранирование поставить

Надіслати
Поділитися на інших сайтах

Прошерстил opencart и  ocStore на предмет SELECT category_id FROM

 

Нашел в seo_pro.php

Но там ЖЕСТКО заэкранировано

И 100% пробоя нет

        $product_id = (int)$product_id;
        if ($product_id < 1) return false;
    private function getPathByProduct($product_id) {
        $product_id = (int)$product_id;
        if ($product_id < 1) return false;

        static $path = null;
        if (!is_array($path)) {
            $path = $this->cache->get('product.seopath');
            if (!is_array($path)) $path = array();
        }

        if (!isset($path[$product_id])) {
            $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1");

            $path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0);

            $this->cache->set('product.seopath', $path);
        }

        return $path[$product_id];
    }
  • +1 1
Надіслати
Поділитися на інших сайтах

странно - в стандартных файлах product_id экранирован через int в данном запросе

 

смотреть логи сервера, как минимум блокировать ip с которого идет обращение

и искать - такое ощущение что в каком-то из модулей брешь

IP заблокировал, спасибо за совет.

заметил странные запросы к одному из файлов модуля "Похожие товары", обновил до последней версии

хостинг - шаред от Бегета. те логи что доступны, ничего подозрительного больше нет.

 

могу ли я еще что-то сделать чтобы обезопасить себя?

Надіслати
Поділитися на інших сайтах


IP заблокировал, спасибо за совет.

заметил странные запросы к одному из файлов модуля "Похожие товары", обновил до последней версии

хостинг - шаред от Бегета. те логи что доступны, ничего подозрительного больше нет.

 

могу ли я еще что-то сделать чтобы обезопасить себя?

 

Поищите по FTP в файлах вот такой код

SELECT category_id FROM

 

И скажите где нашло (кроме seo_pro.php и моего модуля (у меня похожий код ЧПУ формирователя с seo_pro там все тоже заэкранировано))

 

Может в Похожие товары забыли экранирование поставить?

Надіслати
Поділитися на інших сайтах

если подозреваете модуль - найдите в его файлах строку, содержащую

SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id

и выложите ее здесь целиком под спойлером

тогда можно будет точно сказать, виноват ли код модуля

Надіслати
Поділитися на інших сайтах

Поищите по FTP в файлах вот такой код

SELECT category_id FROM

 

И скажите где нашло (кроме seo_pro.php и моего модуля (у меня похожий код ЧПУ формирователя с seo_pro там все тоже заэкранировано))

 

Может в Похожие товары забыли экранирование поставить?

 

 

class ModelModuleSimilar extends Model {

public function getProductSimilar($product_id,$limit) {

$this->load->model('catalog/product');

$product_data = array();

if($product_id){
// находим категорию, в которой нах. товар
$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'");
$category_id = $category->row['category_id'];
// делаем выборку товаров из этой же категории, которые следуют после данного товара
$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

foreach ($query->rows as $result) {
$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
}

if(count($query->rows) < $limit){ // если в категории после товара меньше установленного лимита...
$limit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице
$sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

foreach ($sql->rows as $result) {
$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
}
}
}

return $product_data;
}
}

 

Модуль https://opencartforum.com/files/file/834-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-%D0%BF%D0%BE%D1%85%D0%BE%D0%B6%D0%B8%D0%B5-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/

Змінено користувачем PoliteX
Надіслати
Поділитися на інших сайтах


Алаверды - вот там и пробой

$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'");

Нет экранирования $product_id

Надіслати
Поділитися на інших сайтах

Исправьте код на

 

$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .(int) $product_id. "'");

 

  • +1 1
Надіслати
Поділитися на інших сайтах

сам модуль пока лучше отключить

либо изменить строку

$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'");

на

$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .(int)$product_id. "'");
  • +1 1
Надіслати
Поділитися на інших сайтах

да что ж ты будешь делать!!! никак не успеваю! :-D :-D :-D

Та, да :)

 

Главная суть, что пользователю помогли

Надіслати
Поділитися на інших сайтах

ТС тоже молодец - обратил внимание

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

Надіслати
Поділитися на інших сайтах

ТС тоже молодец - обратил внимание

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

За что PoliteX и получил два плюса :-D

Надіслати
Поділитися на інших сайтах

ТС тоже молодец - обратил внимание

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

еще бы разобраться с 

 

/public_html/system/library/request.php

и

/public_html/system/library/cache.php

 

и лог ошибок был бы чист  :-)

Змінено користувачем PoliteX
Надіслати
Поділитися на інших сайтах


а что с ними не так?

впрочем, лучше для этого отдельную тему создать (предварительно поискать по форуму - возможно ответы уже есть)

Надіслати
Поділитися на інших сайтах

еще бы разобраться с 

 

/public_html/system/library/request.php

и

/public_html/system/library/cache.php

 

и лог ошибок был бы чист  :-)

А там еще что у вас ?

Уже успели и туда хакеры нагадить ?

Надіслати
Поділитися на інших сайтах

а что с ними не так?

впрочем, лучше для этого отдельную тему создать (предварительно поискать по форуму - возможно ответы уже есть)

Теперь Вы раньше :) :) :-D

Надіслати
Поділитися на інших сайтах

public_html/system/library/request.php on line 33
 
пишут что решение в .htaccess файл  добавить GeoIPEnableUTF8 On
Однако добавление ложит сайт с 400 ошибкой. обратился к хостеру за помощью.
 
а /public_html/system/library/cache.php

2016-03-10 16:14:09 - PHP Warning: unlink(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457619249) [0function.unlink0]: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 46

2016-03-10 11:04:50 - PHP Warning:  file_get_contents(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457600690) [0function.file-get-contents0]: failed to open stream: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 10
2016-03-10 11:04:51 - PHP Warning:  unlink(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457600691) [0function.unlink0]: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 46
2016-03-09 20:49:26 - PHP Warning:  fopen(/home/l/lushko/price/public_html/system/cache/seocms/seoblog/cache.blog.seoblog.record.blog_design.1457581766) [0function.fopen0]: failed to open stream: No such file or directory in /home/l/lushko/price/public_html/system/library/agoo/cache.php on line 140
Надіслати
Поділитися на інших сайтах


public_html/system/library/request.php on line 33

 

пишут что решение в .htaccess файл  добавить GeoIPEnableUTF8 On

Однако добавление ложит сайт с 400 ошибкой. обратился к хостеру за помощью.

 

а /public_html/system/library/cache.php

2016-03-10 16:14:09 - PHP Warning: unlink(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457619249) [0function.unlink0]: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 46

2016-03-10 11:04:50 - PHP Warning:  file_get_contents(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457600690) [0function.file-get-contents0]: failed to open stream: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 10
2016-03-10 11:04:51 - PHP Warning:  unlink(/home/l/lushko/price/public_html/system/cache/cache.product.seopath.1457600691) [0function.unlink0]: No such file or directory in /home/l/lushko/price/public_html/system/library/cache.php on line 46
2016-03-09 20:49:26 - PHP Warning:  fopen(/home/l/lushko/price/public_html/system/cache/seocms/seoblog/cache.blog.seoblog.record.blog_design.1457581766) [0function.fopen0]: failed to open stream: No such file or directory in /home/l/lushko/price/public_html/system/library/agoo/cache.php on line 140

Насчет cache...

Это не зависит от модуля.

Это зависит от НЕ ПРАВИЛЬНОЙ настройки сервера ХОСТЕРА

Точнее не правильного кеширования файловой системы (ФС)

К примеру - скрипт запрашивает, есть ли такой файл, чтобы я его удалил... сервер бодро отвечает - ЕСТЬ! (проверил "я" в кеше ФС - он есть). Модуль говорит - OK, удаляю... а тут бац а реально его уже на сервере давно нет. Понятное дело что php об этом выдает ПРЕДУПРЕЖДЕНИЕ - это не ошибка, это предупреждение, причем на совести ХОСТЕРА

Так что на это обращать внимание не стоит особо

  • +1 1
Надіслати
Поділитися на інших сайтах

Не лучше ли контроль и приведение типов делать на входе в функцию?

public function getProductSimilar($product_id,$limit) {

$product_id = (int)$product_id;
$limit = (int)$limit;

Тогда не придется, как в данном случае, искать, где было экранирование, а где - нет

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.