Николай

Николай

С нами с 09 ноября 2013; Место в рейтинге пользователей: #57
Николай
16 октября 2018, 14:04
0
Я лично из вашего сообщения только понял, что опции каким-то странным образом затираются и это плохо для вас. Хоть бы скрины, последовательность шагов приложили, если хотите адекватный ответ получить. У меня, например, всё работает, и не жалуюсь. В 90% случаев, если не 99%, виноваты кривые руки. Сколько раз убеждался по себе.
Николай
05 октября 2018, 13:34
0
В документации к сниппету msProducts. А так конечно не все возможные параметры указаны в сниппетах pdoTools и их «наследников», бывает, что параметры одного сниппета подходят к другому, но об этом нигде не написано.
Николай
05 октября 2018, 04:57
0
Да, должно помочь. Теги в таблице modx_ms2_products хранятся в виде JSON. И они продублированы в таблицу modx_ms2_product_options, где каждый тег это отдельная запись. А &optionFilters фильтрует как раз по значениям из этой таблицы. Там теги, цвета, опции, размеры, в общем, всё что во множественном списке вбивается (имеется ввиду свойства товара минишоп, а не TV), это всё опции. Если в таблице товаров каждая строка это отдельный товар, то в таблице опций может быть множество записей относящихся к одному товару, соответственно принцип фильтрации другой. Вроде так…
Николай
04 октября 2018, 18:12
0
Нашедшему дырку компонент в подарок))
Николай
03 октября 2018, 22:10
0
С такими вопросами, наверное, лучше не наступать на подобные заказы :)
Николай
02 октября 2018, 19:20
0
FormIt пробовал вчера таким же образом тестить, вырезает скобки. То ли что-то изменилось за полгода, то ли я особо сильно не экспериментировал.
Николай
02 октября 2018, 14:20
0
По-моему, это не выход. Фильтрация должна быть глобальной на уровне системы, иначе угроза будет постоянной.
Просто, например, может возникнуть необходимость хранить исходные данные от посетителей. Особенно если они нигде не выводятся на сайте. Опять же какие-то гибкие настройки должны быть, что фильтровать, а что нет, и как. Допустим, сниппет хочет вывести какой-то плейсхолдер, вот по умолчанию он должен фильтроваться перед выводом на сайте на уровне ядра. А если я как разработчик хочу отключить это поведение, то должен указать это системе (по аналогии с виндой — запуск от имени администратора). Короче, всё что во фронтенд выводится, всё фильтровать по идее нужно, по умолчанию. И тогда в БД можно хранить что угодно. А если ещё и на уровне приёма данных также сделать, то двойная защита будет. Тогда и новички в MODX, коих большинство, будут в безопасности. Скажем, хотят вывести
[Мой сайт], а и им MODX подменяет на [Мой сайт]
Начинают негодовать, почему так происходит. И потом узнают про безопаность. Т.е. сначала идёт безопасность, а потом уже остальное.

Ну это чисто мои мысли вслух так сказать, не знаю как система устроена и насколько это всё реализуемо)
Николай
02 октября 2018, 13:44
0
Но, конечно, фильтровать вообще всё без разбора тоже не самый лучший вариант. Неплохо было бы какие-то стандарты написания и тестирования компонентов и сниппетов ввести, особенно платных, и какой-нибудь значок соответствующий — «фильтрует данные» (как в программах — проверено антивирусом), или что-то типа того. И в настройках системных, чтобы опции были как строго фильтровать данные, какие и т.д. Отдельный раздел по безопасности в документации к компоненту. Чтобы было ясно, что этот вопрос волновал разработчика. Как-то так… Есть же для верстальщиков валидатор, вот подобный чек-лист у разработчиков должен быть.
Николай
02 октября 2018, 13:42
0
Ну вот откуда Вы это взяли? Евгений же всё внятно объяснил.
Его же слова:
Как вы видите, способы обхода фильтрации достаточно типовые.
Поэтому единственное разумное решение — всегда подменять квадратные скобки на сущности, а не полагаться на встроенный обработчик.
Приведу пример. Есть компонент платный — Callbak. Я без проблем вписываю вызовы сниппетов или глобальных плейсхолдеров в поля формы обратного звонка, и на почту админу приходит ключ его сессии, или пароль от БД. Это хорошо, что штатно письмо только админу приходит. И это не единственный пример, который я знаю. И их может быть много больше. Да тот же FormIt в БД хранит не обработанные данные форм. Если они где-то выводятся на сайте, то картина будет похожая.
Николай
01 октября 2018, 23:32
0
Спасибо за подсказку, способ нормальный, но если сам какой-нибудь сниппет пишу. А если компонент сторонний, то не иначе как в его внутренности лезть придётся. А сколько там данных передаётся и принимается. А если ставишь их по 20 штук… и там фильтрация слабенькая, или что-то упустил автор. Я просто довольно легко один сайт (свой) взломал по этой заметке, хотя далеко не спец в программировании, а в безопасности вообще нуб. Отсутствие фильтрации квадратных скобочек реально напрягает… В идеале было бы как-то в одном месте все данные фильтровать по каким-то своим правилам. Типа такой общий шлюз, сначала данные через него проходят, а потом уже в сниппеты и компоненты. Но не знаю возможно ли это.
Николай
01 октября 2018, 14:25
0
Особо не силён, поэтому только догадки… Сниппеты обращаются к коннекторам, и практически все данные проходят через них. Возможно ли расширить какой-нибудь стандартный класс MODX, чтобы данные лучше фильтровать?
Николай
01 октября 2018, 14:14
0
Проверил у себя, реально дыры…

А есть способ сделать фильтрацию всего, что вообще приходит в параметрах post и get? Т.е. прежде чем данные дойдут до какого-нибудь сниппета, они обработаются раньше? Чтобы исключить недостатки большинства компонентов.
Николай
26 сентября 2018, 13:12
+1
Вообще в идеале было бы прикольно, если есть у кого идеи или решение о том, как можно менять title на стадии создания тикета из фронта, было легче и проще, но и там я не преуспел, даже с костылями.
Можно создать плагин на событие OnDocFormSave, там же подключить библиотеку типа PHP Simple HTML DOM Parser, а дальше распарсить любое сохраняемое значение и перезаписать его на лету.
Николай
20 сентября 2018, 23:42
+2
В компании vc.ru подтвердили, что тестируют новую рекламную технологию в нескольких регионах. В Tele2 уточнили, что интернет-трафик при показах рекламы не оплачивается абонентом.
Они такие предумотрительные, что сэкономят мне пару лишних мегабайт, а за это я буду любоваться какой-нибудь фигнёй поверх сайтов)) Оборзели в край бизнесмены недоделанные. Платишь за трафик, но и этого мало. Из принципа придётся отказаться от этого чернушного оператора, хотя связь устраивает. Может кому пригодится заметка, когда обнаружит на своих сайтах «хитрый вирус»)) Блин, я столько времени на него потерял, чтобы разобраться… Кстати, так и не понял за что заминусовали.
Николай
19 сентября 2018, 23:24
0
Захотел я было качнуть скрипт jquery с официального сайта, открываю, а там знакомая картина:



И так во всех браузерах. А я то как раз 3 дня назад систему переставлял, компьютер чистый, NOD32 лицензия… Полез в интернет, вот что пишут:



У меня то как раз TELE2. Вот такой вот «хитрый вирус»…
Николай
18 сентября 2018, 19:47
0
Я просто предположение высказал, что якобы это один человек, потому-что не разбираюсь в вопросе. Признаю, уязвимость может быть из паблика. Но цель у меня была проверить как у других, чтобы все спохватились, может оказаться, что реально каждый второй сайт заражён и никто про это не знает. А чем больше народу подключиться, тем больше вероятность, что проблема решится.
Николай
18 сентября 2018, 19:31
0
Ну так если мне уже который сайт попадается, причём на разных серверах, то логично предположить, что таких сайтов довольно много в массе своей. И их владельцы не в курсе. Вот я и хотел прояснить масштабы, и возможно сообща найти решение, но пока все молчат) А насчёт айболитов это лишь то, что в первую очередь в голову пришло. Я думаю здесь небольшой процент людей, кто сможет самостоятельно выявить и исправить проблему. Стало быть, если таких людей много, то для них это довольно значимая проблема))
Николай
18 сентября 2018, 18:10
0
Если ваши клиенты вам платят за поддержку, то это ваша головная боль. Если клиенты в свободном плаванье, то рекомендация обновиться и подчиститься по причине массовых взломов воспринимается как забота о клиенте и ответственный подход к работе.
Да нет никакой поддержки. Я сейчас берусь на фрилансе за всякую чепуху. Обычно от посредников. Указанный сайт не мой, просто как пример.

— Либо вы не достаточно компетентны, чтобы адекватно аргументировать необходимость того или иного действия
— Либо с бизнесом у клиента не все в порядке
Либо мне и моим заказчикам (посредникам) это не нужно)) Ну или хозяин раз в месяц в офисе появляется. Да много разных вариантов может быть.

Без обид, но в вашем случае я склонен думать, что причина не в компетентности. Банально, у вас стоит ISPManager, где можно без лишних усилий подключить Let's Encrypt. Но до сих пор это не сделано. Чего уж там говорить про обновление и вирусы.
Может мне тогда и объяснять каждому втором про необходимость https?) Настроил им менюшку, а потом пытаешься впарить https) Тот сайт не мой ещё раз повторюсь. Кстати, есть один пример с теми же симптомами, но с https.

Я по части собрать сайт, а вот с уязвимостями туго у меня, и не знал даже к кому обратиться. Теперь знаю, поэтому если что свяжусь с вами. Уже есть на примете один человек, ему всё разжевал.

P.S. Я не считаю себя профессионалом, но судя по сайтам, которые мне попадаются в работу, такое ощущение, что их делали криворукие, которые вчера про MODX узнали.