Андрей Степаненко

Андрей Степаненко

С нами с 28 октября 2014; Место в рейтинге пользователей: #8
Отправить деньги
Андрей Степаненко
12 сентября 2018, 20:18
0
Не понял про что.
Про функцию «condition»
public $customConditions = array();
    public function condition(& $target, $conditions = '1', $conjunction = xPDOQuery::SQL_AND, $binding = null, $condGroup = 0)
    {
        // TODO Здесь установлен хук
        if ($className = $this->xpdo->loadClass($this->_class)) {
            if ($this->xpdo->getPackage($className) == 'sx') {
                $this->customConditions = $conditions;
            }
        }

        $condGroup = intval($condGroup);
        if (!isset ($target[$condGroup])) $target[$condGroup] = array();
        try {
            $target[$condGroup][] = $this->parseConditions($conditions, $conjunction);
        } catch (xPDOException $e) {
            $this->xpdo->log(xPDO::LOG_LEVEL_ERROR, $e->getMessage());
            $this->where("2=1");
        }
        return $this;
    }
$q->customConditions
от сюда можно получить нормальный запрос

Так как после преобразования запроса его уже нормально не обработать.
Так я его смог передать в sphinxQL, ну а там уже собственно до лампочки какие SQL инъекции производятся в таблицы sphinxsearch… по сути влияют только на поиск.
Андрей Степаненко
12 сентября 2018, 19:59
0
Ну или так.
Кстати, супер компонент modHelpers. Очень много вопросов закрыл с помощью него.
Выше приведенный метод использовать для отправки данных в sphinxQL именно по этому привел его в пример)))
Андрей Степаненко
12 сентября 2018, 19:28
0
Вообще можно свой фильтр установить для своих классов.
В XPDO есть функция:
https://github.com/modxcms/revolution/blob/2.x/core/xpdo/om/xpdoquery.class.php#L374
Где можно фильтровать данные для своих таблиц. Правда без правки файла не обойтись.

Пример:
public function condition(& $target, $conditions = '1', $conjunction = xPDOQuery::SQL_AND, $binding = null, $condGroup = 0)
    {
       
        if ($className = $this->xpdo->loadClass($this->_class)) {
            if ($this->xpdo->getPackage($className) == 'minishop') {
                // тут проверка
                return $this;
            }
        }

        $condGroup = intval($condGroup);
        if (!isset ($target[$condGroup])) $target[$condGroup] = array();
        try {
            $target[$condGroup][] = $this->parseConditions($conditions, $conjunction);
        } catch (xPDOException $e) {
            $this->xpdo->log(xPDO::LOG_LEVEL_ERROR, $e->getMessage());
            $this->where("2=1");
        }
        return $this;
    }
Андрей Степаненко
10 сентября 2018, 12:44
+1
Про безопасный доступ для менеджера.
Из идей:
— если пользователь авторизовался и попытался стать sudo то проверять его по доверенным IP, и если он не окажется в этом списке то не давать ему доступа.
— запрет запуска сниппетов в поле content для менеджеров(хотя наверное даже для всех)
ну и другие пути решения для этого.
Андрей Степаненко
05 сентября 2018, 20:03
+1
В компоненте Tickets есль такая галочка «Выполнять теги MODX” вот одна из во возможностей которую надо внедрить по умолчанию в ресурсы MODX.

Чтобы в контенте ничего нельзя было запустить. В принцепи написать 1 плагин и выводить контент через сниппет решит вопрос запуска сниппетов менеджерами.

А вообще как правило самое узкое место откуда все начинается это установка галочки sudo после этого можно делать че угодно в админке!
Напишите простой код чтобы если у пользователя с sudo доступом IP не совпадает с вашим ip то не давать доступа. Тока храните ip не в базе. А то с sql операциями у многих уже есть опыта по взлому.
Андрей Степаненко
05 сентября 2018, 18:23
0
Че обсуждаем…
О чем речь.

Евгений мы вроде по общались с тобой. Тебя затронул что я написал мол ты компонент хотел скачать? Я ж вроде тебе комментарий оставил что так бывает, мало ли у кого какие намерения.
В следующий раз когда взломают очередной демо сайт, теперь все будут обращаться к тебе за помощью по защите от взлома, тоже выгодное дело.

Алексей плохо то что вы только сейчас узнали о не безопасности менеджеровского доступа, это уже давно обсуждалось и об это уже были темы.
Да и потом если вы занимаетесь разработкой сайтов и поддержкой ну попробуйте по лучше изучить безопасность MODX.
Андрей Степаненко
05 сентября 2018, 17:56
0
Надо писать тогда свою cms если к другой доверия нету! Пишите свои компоненты, трать время!
Я считаю что без разницы какой код главное сколько времени придётся потратить на достижения своих целей! Ну и потом время это практически всегда ваши деньги всё-таки живем во времена «капитализма»!
Андрей Степаненко
05 сентября 2018, 17:50
0
На счёт безопасности и корпоративных сетей примерно год назад у закомых положили сервер да так что месяца два данные восстанавливали! Тоже VPN корпоративная сеть на 2 сотни компов! Бизнес встал!
Какой только защиты небыло! Серове нашлись товарищи которые сумели это сделать.

Вообще у других cms дела как то проще обстоят? Ну наверняка если зайти в админку можно и зная систему так же переломать все! Причём тут MODX когда дело в людях!
Андрей Степаненко
05 сентября 2018, 17:34
0
Чувак, ты тему просто не там поднял! Мог бы мне сразу написать и все.
Андрей Степаненко
05 сентября 2018, 16:23
0
Евгений, я упомянул текущую проделанную операцию по взлому, и лишь асоциаровалов со своим предположением.
Я лишь привел пример.

Это лишь был самый простой способ добиться цели. Без проблем можно провернуть аналогичное не имея на сайте ни одного компонента.
Еще раз объясняю: пофиг, ломайте, восстановлю из резервной копии…
Андрей Степаненко
05 сентября 2018, 15:44
0
Рекемендация на все случаи жизни, пускайте в админку только по разрешенным вами IP адресам. Тогда врядли эти товарищи будут вас ломать!
Есть ли в мире система которую невозможно сломать или которую никогда не ломали?
Да с уверенность можно ответить что НЕТ!
Всяческие разговоры о безопасность приводят к ее улучшею!
А разговоры о том что что-то модкс дырявый дак их можно вести и без всяких критических уезвимостей!
Есть куча коммерческих cms которые аналогично кладут на лопатки за счёт каких то дополнений!
m.habr.com/post/307734/

Или же вариант такой: покупаешь битрикс и тратишь кучу бабла. С modx как я понял люди вылечиваются! И не тратят на это по 30000к за то что их сайт вылечили!

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

И вообще этот взлом к моему компоненту не как не относится! А то такое ощущение создаётся что это мой компонент виноват и мол через него что-то можно сломать!

Да и текущий взлом и даже не MODX дыра! Вся проблема это сторонние дополнения!
Андрей Степаненко
05 сентября 2018, 03:27
+1
Так посмотрел что какой то компонент качается очень часто, и написал свой)))
да ещё и за деньги выложил.
В modstore решают эту проблему переносом дополнений на поддержку к другим авторам.

Если давать дописываться в своём коде все что угодно, кто это будет тестировать? Опять разработчик! Хорошо если программист напишет отличный код и все сразу срастется. А если код будет кривой? Сидеть упражнять с чужим кодом не очень приятно занятие!

А вообще на счёт аналогов:
Думаю что если написать что-то мощнее во много раз чем аналог то и вам ни кто ничего не скажет! Опять же не ссылаясь на прямой аналог этого компонента и не пытаясь продвинуть свой вариант ради того чтобы перекрыть чужой аналог.
Если высчитать что ваш вариант компонента намного лучше ну дак включите фантазию сделайте его именно таким.

Публикуют компонент и представляют его как аналог Другова, но по функционалу он не дотягивал во много раз до своего аналога. Сидите доказывать что твой компонент круче, ну как то не правильно.
Андрей Степаненко
05 сентября 2018, 02:55
0
Дак собствено для этого исходники и удаляю с демонстрационных сайтов))
Встроеная защита нужна лиш для защиты от криворуких менеджеров
Андрей Степаненко
04 сентября 2018, 17:25
0
Поправил эту ошибку.
Теперь поддержка php5 тоже есть
Андрей Степаненко
04 сентября 2018, 10:57
0
По умолчанию конечно же нет. Но там большой набор возможностей для того чтобы можно было это сделать.
Все строиться на профилях для экспорта.
Если будете покупать, напишу для вас профиль экспорта с этой возможностью.
Андрей Степаненко
30 августа 2018, 04:37
0
Был такой, скажу так: все можно настроить и будет работать, либо железо по мощней!
Андрей Степаненко
24 августа 2018, 15:08
0
Пока только на php7 работает!