The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опасные уязвимости в платформе электронной коммерции Magento

28.03.2019 23:02

В открытой платформе для организации электронной коммерции Magento, которая занимает около 20% рынка систем для создания интернет-магазинов, выявлены уязвимости, позволяющие выполнить код на сервере и осуществить подстановку SQL-запроса. Проблемы устранены в выпусках Magento 2.1.17, 2.2.8 и 2.3.1, в которых также исправлено 30 менее опасных уязвимостей, таких как межсайтовая подделка запроса (CSRF) и межсайтовый скриптинг (XSS).

Наиболее опасная проблема позволяет добиться подстановки своего SQL-кода через отправку специального запроса к обработчику "/catalog/product/frontend_action_synchronize". Атака может быть проведена неаутентифицированным пользователем. Через манипуляции с содержимым БД атакующий может добиться выполнения своего кода на стороне сервера или загрузить конфиденциальные данные из БД, включая хэши паролей пользователей.

Ещё 5 уязвимостей позволяют выполнить свой код на сервере, но ограничены атаками со стороны аутентифицированных пользователей, снабжённых дополнительными привилегиями. Например, пользователь с правом создания уведомлений и шаблонов писем может выполнить код через создание специально оформленных шаблонов, а пользователи с правами администратора магазина могут выполнить PHP-код через манипуляции с шаблонами писем или загрузку phar-файла под видом картинки (проведение атаки "Phar deserialization").

  1. Главная ссылка к новости (https://blog.sucuri.net/2019/0...)
  2. OpenNews: Опубликована статистика компрометации сайтов в 2018 году
  3. OpenNews: Более 5900 интернет-магазинов поражены вредоносным ПО для перехвата номеров кредитных карт
  4. OpenNews: Уязвимости в платформе электронной коммерции Magento
  5. OpenNews: Критическая уязвимость в платформе электронной коммерции Magento
  6. OpenNews: Половина протестированных интернет-магазинов на платформе Magento подвержены критической уязвимости
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50413-magento
Ключевые слова: magento
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:09, 28/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    1.9 подвержены?
     
  • 1.2, Ordu (ok), 23:17, 28/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Наиболее опасная проблема позволяет добиться подстановки своего SQL-кода через отправку специального запроса

    Шёл 2019 год, а php всё не мог справиться с sql-injection. Блин, КАК ТАК МОЖНО?

    Не, ну ладно C и C++ продолжают десятилетиями ходить по граблям нулевых и висящих указателей, там особенности языка вынуждают. Но sql -- это внешняя сущность для php, и всё что надо -- дать веб-макаке safe-API, который не позволит ей создать условий для sql-инъекции.

     
     
  • 2.3, Crazy Alex (ok), 23:45, 28/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Попытайтесь. И удивитесь, как много странных случаев, которые в красивые ограничения не укладываются - разного рода генерация имён таблиц на лету и тому подобное. Если проект крупнее hello world - никуда не денетесь, будете время от времени собирать запрос строкой, со всеми вытекающими рисками.

    В плюсах, кстати, тоже можно в 99% случаев обойтись без каких-либо "граблей нулевых и висящих указателей", тем они от C и отличаются.

     
     
  • 3.6, vedronim (?), 00:43, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Динамически собирать запрос можно и в безопастном виде.
     
     
  • 4.7, Аноним (7), 01:07, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, нельзя. В SQLite, например, нельзя создавать таблицы и триггерить прагмы используя prepared statements.
     
     
  • 5.31, vedronim (?), 09:48, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Нет, нельзя. В SQLite, например, нельзя создавать таблицы и триггерить прагмы используя
    > prepared statements.

    Скклайт это крайний случай. На нем е-коммерцию нормальные люди не делают. Уже в майскуеле все делается без проблем.

     
  • 4.25, Онаним (?), 08:43, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Два золотых правила, забывая которые, получают все эти грабли:
    1) Весь - повторюсь - ВЕСЬ user input считается untrusted и при необходимости внутреннего использования - 100% валидируется в обязательном порядке, при любых условиях, даже если это увеличит объём и сложность кода в разы
    2) При передаче каких либо untrusted данных в среду, использующую специальные символы в наборе данных, в обязательном порядке делаем полноценный escape согласно требованиям среды
     
  • 3.8, Ordu (ok), 01:08, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Попытайтесь. И удивитесь, как много странных случаев, которые в красивые ограничения не
    > укладываются - разного рода генерация имён таблиц на лету и тому
    > подобное. Если проект крупнее hello world - никуда не денетесь, будете
    > время от времени собирать запрос строкой, со всеми вытекающими рисками.

    Это делается элементарно:

    let field_name = get_one_more_field_name();

    let result = query_builder()
        .select(["uid", "nickname", field_name])
        .from(USERS_TABLE)
        .where(less(length("nickname"), 5))
        .execute(SQL_CONNECTION);

    Функции less и length, понятно, возвращают объекты, которые затем where компилирует в строчку. Или может не where, может стоит сначала собрать всё в один объект-запрос, проверив параллельно синтаксис, а затем всё за раз скомпилировать, чтобы не выделять память под строку с запросом, а непосредственно писать запрос в сокет sql.

    Если напрягает то, что все эти "uid", "nickname" будут прогоняться через функцию экранирования каждый раз, дёргая каждый раз кучу и тормозя выполнение, то ничто не мешает объявить тип EscapedSqlString, который будет содержать в себе строку, а функция sql_escape_string, будет этот тип "разворачивать", возвращая строку изнутре не экранируя её, а обычный String она будет экранировать. Использование EscapedSqlString привносит возможностей скосячить, но так же оно привносит дополнительных трудностей, из-за чего самый простой способ использовать EscapedSqlString это:

    const UID = EscapedSqlString::new("uid");
    const NICKNAME = EscapedSqlString::new("nickname");

    и затем:
        .select([UID, NICKNAME, field_name])
    и
        .where(less(length(NICKNAME), 5))

    Конечно, если мы говорим об интерпретируемом языке, то подобный подход всё равно добавит тормозов, потому что придётся собирать временный объект, но добавит оно не особо, а вот создать sql-инъекцию можно будет разве что злоумышленно.

     
     
  • 4.10, vitalif (ok), 01:17, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ...и учить ещё один язык в дополнение к SQL. А потом ой а как написать OR? Ой а как написать постгрес специфичный оператор? Ой а как вместо таблицы подзапрос? Ой а CTE написать?

    Я лично вообще не понимаю, как можно такие баги (возможность sql-инъекции) допускать на любом языке. Рукожопу и Rust не помеха

     
     
  • 5.11, Ordu (ok), 01:33, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ...и учить ещё один язык в дополнение к SQL.

    Это и есть sql. Тут ничего учить дополнительно не надо, достаточно понять идею, как синтаксис sql транслируется в это.

    > А потом ой а как написать OR? Ой а как написать постгрес специфичный оператор? Ой а как вместо таблицы подзапрос? Ой а CTE написать?

    Для того, чтобы таких вопросов не возникало, библиотека для создания sql запросов должна хоститься на github'е, чтобы её разработка велась бы несколькими заинтересованными разработчиками, и постоянно бы туда влетали бы feature и pull реквесты. Через полгода она будет уметь всё, что надо. Ещё через полгода-год, она стабилизируется.

    > Я лично вообще не понимаю, как можно такие баги (возможность sql-инъекции) допускать
    > на любом языке.

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

    > Рукожопу и Rust не помеха

    Да. Как показывает опыт применения miri на std из rust'а, не проблема: https://github.com/rust-lang/miri#bugs-found-by-miri
    Если тебе слова в тех багах мало что говорят, то я поясню, что последние четыре -- это прямые нарушения rust'овых инвариантов, которые можно использовать для того, чтобы получить, как минимум, data race. А в некоторых, случаях, возможно даже use after free или типа того. Точнее не скажу, что именно можно -- это надо смотреть описание багов.

    Но здесь ты совершаешь очень распространённую ошибку. Если мы не можем решить проблему на 100%, это не повод отказываться от того, чтобы решить её на 90%. Проблема решённая на 90% лучше, чем проблема решённая на 0%.

     
     
  • 6.15, Crazy Alex (ok), 02:58, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да блин, ормов сотоварищи написано уже море. Но используются в основном какой-нибудь джаве, где написать простыню (и ещё кусок xml впридачу) для выполнения чего-то тривиального - норма, как в том же Hibernate. И то вписанные руками SQL запросы - не то чтобы редкость. Потому что по дефолту либо с быстродействием проблемы, либо что-то требует больше динамики, чем может предоставить либа.
     
     
  • 7.16, Ordu (ok), 04:16, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да блин, ормов сотоварищи написано уже море. Но используются в основном какой-нибудь
    > джаве, где написать простыню (и ещё кусок xml впридачу) для выполнения
    > чего-то тривиального - норма, как в том же Hibernate. И то
    > вписанные руками SQL запросы - не то чтобы редкость. Потому что
    > по дефолту либо с быстродействием проблемы, либо что-то требует больше динамики,
    > чем может предоставить либа.

    То что я предложил выше -- это не ORM. Не надо путать тёплое с мягким.

     
     
  • 8.26, Онаним (?), 08:47, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну делал я себе такой генератор запросов ради эксперимента Выкинул 1 Неудобно... текст свёрнут, показать
     
     
  • 9.39, Аноним (39), 12:09, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не, мужики, вы опять двинулись не в ту сторону Вместо того, чтобы мечтать о как... текст свёрнут, показать
     
     
  • 10.52, Crazy Alex (ok), 17:35, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ну не живёт оно Хотелки всегда растут... текст свёрнут, показать
     
  • 10.55, Борщдрайвен бигдата (?), 20:29, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо о них мечтать Они есть, да, с проверкой корректности в compile time, ти... текст свёрнут, показать
     
  • 9.44, Ordu (ok), 13:25, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А как ты мерял Я просто нашёл такую библиотеку для php, и мне аж любопытно стал... текст свёрнут, показать
     
  • 8.51, Crazy Alex (ok), 17:34, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я знаю поэтому и написал ормов сотоварищи ... текст свёрнут, показать
     
  • 6.48, Sw00p aka Jerom (?), 16:17, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Проблема решённая на 90% лучше, чем проблема решённая на 0%.

    кхммм, во-первых, проблемы разрешают, а не решают, решают - задачи. Во-вторых, по определению у проблемы на данный момент не должно быть разрешений, на то и проблема. В третьих, в вашем утверждении проблему нужно заменить на задачу.

    пс: не сочтите за придирания к словам, но лучше на не использовать то понятие, которое знаете на 90%, "незнайка, лучше недоучки".

     
     
  • 7.54, Ordu (ok), 19:28, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >>Проблема решённая на 90% лучше, чем проблема решённая на 0%.
    > кхммм, во-первых, проблемы разрешают, а не решают, решают - задачи.

    Давайте теперь устроим тут урок русского языка?

    > Во-вторых, по
    > определению у проблемы на данный момент не должно быть разрешений, на
    > то и проблема. В третьих, в вашем утверждении проблему нужно заменить
    > на задачу.

    Как вам будет угодно.

    > пс: не сочтите за придирания к словам, но лучше на не использовать
    > то понятие, которое знаете на 90%, "незнайка, лучше недоучки".

    🙄

     
  • 5.13, freehck (ok), 02:00, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Я лично вообще не понимаю, как можно такие баги (возможность sql-инъекции) допускать на любом языке.

    Как-как. Надо спозиционировать язык как "язык для домохозяек", после чего нарастить соотвествующего уровня сознания комьюнити -- и вуаля, получите массу ошибок такого толка в тысячах проектов. =)

     
  • 4.12, freehck (ok), 01:57, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > let result = query_builder()
    >     .select(["uid", "nickname", field_name])
    >     .from(USERS_TABLE)
    >     .where(less(length("nickname"), 5))
    >     .execute(SQL_CONNECTION);

    Ну с селектом-то всё просто. Если уж показывать, то джойны, агрегаты, вложенные запросы. =)

     
     
  • 5.22, Ordu (ok), 05:04, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Мне сложно навскидку предложить решение для php Там нужны ссылки на поля из раз... большой текст свёрнут, показать
     
     
  • 6.27, Онаним (?), 08:53, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ага. А теперь давай напишем

    (
    (SELECT a.x, (SELECT SUM(b.y) FROM b WHERE b.f IN (SELECT e.p FROM e)) AS c, CONCAT(a.z, a.abc) AS d INNER JOIN (SELECT g.h, g.j FROM g WHERE g.k = 1) AS l ON l.h = a.m)
    UNION
    (SELECT a.x, (SELECT SUM(b.y) FROM b WHERE b.f IN (SELECT e.p FROM e)) AS c, CONCAT(a.z, a.abc) AS d INNER JOIN (SELECT n.h, n.j FROM g WHERE g.k = 1) AS l ON l.h = a.m)
    ) LIMIT 50

    Ну, ORDER, WHERE, GROUP и HAVING пропустил, можно ещё и там было побаловаться

     
     
  • 7.46, Ordu (ok), 13:50, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > g.j FROM g WHERE g.k = 1) AS l ON l.h
    > = a.m)
    > UNION
    > (SELECT a.x, (SELECT SUM(b.y) FROM b WHERE b.f IN (SELECT e.p FROM
    > e)) AS c, CONCAT(a.z, a.abc) AS d INNER JOIN (SELECT n.h,
    > n.j FROM g WHERE g.k = 1) AS l ON l.h
    > = a.m)
    > ) LIMIT 50
    > Ну, ORDER, WHERE, GROUP и HAVING пропустил, можно ещё и там было
    > побаловаться

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

     
  • 6.62, freehck (ok), 13:24, 30/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Да блин, хочешь я тебе сейчас прямо здесь напидаю простейшую реализацию?

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

    Что мне накидывать, накидать-то я и сам могу. Но что ты хочешь от коммьюнити пхпшников, ну в самом деле... Это же пхпшники, ну камон.

    Я помню, как я пытался одного пхпшника в проекте научить делать авторизацию через базу. Дал ему ссылки на все доки, все апи, вообще на всё. Без толку: он в итоге сделал худо-бедно по роликам на ютубе авторизацию посредством записи сессии в файл, и с чувством выполненного долга доложил о том, что справился. =/

    И это, блин, всего лишь авторизация. А ты про правильные подходы к организации работы с базой.

    Не, вебнику вебниково. Вся работа с базой должна быть вынесена в бэкенд, а вебнику предоставлены API работы с бэкендом. Это -- наиболее разумное решение, имхо. И не на php надо писать фронтенд, а на js. Jamstack не на пустом месте родился.

    PS: и будем честны, вряд ли вебнику под силу писать запросы в базу сложнее селекта и апдейта значений одной конкретной таблицы.

     
     
  • 7.63, Ordu (ok), 23:39, 30/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я из этого обсуждения уже понял Они мыслят в узких рамках создания конкретн... большой текст свёрнут, показать
     
  • 4.14, Crazy Alex (ok), 02:22, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это у вас статически построенный запрос. Для простых случаев - так и делают, благо ормов написано - вагон. А теперь представьте, что оно генерируется динамически - надо - лишнее where добавили (или в него пару-тройку условий), надо - join докрутили, имя таблицы на лету сгенерировали, и так далее. Ну, то есть тоже можно реализовать, но получаются такие монстры, с котороыми связываться - только проблем искать. А если проще - то не выйдет всё эскейпить, оптому что там натурально не только данные подставляются, но и куски языковой конструкции генерируются.

    В общем, поверьте, SQL - это настолько истоптанная тема, что абсолютно все подходы были перепробованы сотни если не тысячи раз. И используется то, что даёт оптимальный выхлоп.

     
     
  • 5.17, Ordu (ok), 04:28, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Динамически Методы типа select, where и прочие вызываются динамически Никто не... большой текст свёрнут, показать
     
  • 5.23, Ordu (ok), 05:32, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я нашёл! https://github.com/nilportugues/php-sql-query-builder

    Действительно я ошибался в отношении тупости php'шников. Простите.

     
     
  • 6.29, Онаним (?), 08:58, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да нет, ты не ошибался. Только это не к PHP'шникам, а как раз к любителям "классических" подходов в PHP.

    40 файлов и 100 килобайт кода. Только чтобы собрать SQL-запрос не конкатенацией.

    Ещё раз: 40 СРАНЫХ ФАЙЛОВ и 100 СРАНЫХ КИЛОБАЙТ КОДА. Ради сборки запроса. В языке с динамической загрузкой и предтрансляцией. А потом эти же люди удивляются, почему их криворукие поделия еле ворочаются даже на шустрых VPS.

     
     
  • 7.33, vedronim (?), 09:51, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Да нет, ты не ошибался. Только это не к PHP'шникам, а как
    > раз к любителям "классических" подходов в PHP.
    > 40 файлов и 100 килобайт кода. Только чтобы собрать SQL-запрос не конкатенацией.
    > Ещё раз: 40 СРАНЫХ ФАЙЛОВ и 100 СРАНЫХ КИЛОБАЙТ КОДА. Ради сборки
    > запроса. В языке с динамической загрузкой и предтрансляцией. А потом эти
    > же люди удивляются, почему их криворукие поделия еле ворочаются даже на
    > шустрых VPS.

    Всеми руками за, бро!

     
  • 7.45, Ordu (ok), 13:27, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да нет, ты не ошибался. Только это не к PHP'шникам, а как
    > раз к любителям "классических" подходов в PHP.
    > 40 файлов и 100 килобайт кода. Только чтобы собрать SQL-запрос не конкатенацией.
    > Ещё раз: 40 СРАНЫХ ФАЙЛОВ и 100 СРАНЫХ КИЛОБАЙТ КОДА. Ради сборки
    > запроса. В языке с динамической загрузкой и предтрансляцией. А потом эти
    > же люди удивляются, почему их криворукие поделия еле ворочаются даже на
    > шустрых VPS.

    Хех. Ну тогда втoпку php, всё что я могу сказать.

     
  • 7.49, Sw00p aka Jerom (?), 16:21, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Ещё раз: 40 СРАНЫХ ФАЙЛОВ и 100 СРАНЫХ КИЛОБАЙТ КОДА. Ради сборки запроса.

    простите, а у вашей ОРМ разве не столько файлов? или вы их своими не считаете?


     
  • 2.9, Sw00p aka Jerom (?), 01:10, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да ладно, не удивлен, после новости с циской )))))

    пс: адская капча 66637

     
     
  • 3.40, Аноним (39), 12:11, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зато у меня щас была кошерная - 24816
     
  • 2.24, Онаним (?), 08:38, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это вопрос элементарной аккуратности. Тут надо не тормознющие и ограниченные safe API плодить для раздолбаев, а банально вправлять руки/мозги джунам до просветления.
     
     
  • 3.43, Ordu (ok), 13:24, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Это вопрос элементарной аккуратности. Тут надо не тормознющие и ограниченные safe API
    > плодить для раздолбаев, а банально вправлять руки/мозги джунам до просветления.

    Да, точно. Вон C/C++ программеры до сих пор правят. И опыт Magento тоже показывает, что это работает. Да.

     
  • 2.28, конь в пальто (?), 08:55, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    тут не в php дело, а конкретно в маженте - эталонного примера некомпетентности разработчиков.
     
     
  • 3.50, Sw00p aka Jerom (?), 16:24, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > тут не в php дело, а конкретно в маженте - эталонного примера
    > некомпетентности разработчиков.

    ругать ЯП - последнее дело!


     
  • 2.47, _ (??), 14:46, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну дык не истери, не плачь, не проси - а возьми И ДАЙ! Ты же типо умнее перечисленных в посте? Или такое же? 😉
     
     
  • 3.53, Ordu (ok), 19:25, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну дык не истери, не плачь, не проси - а возьми И
    > ДАЙ! Ты же типо умнее перечисленных в посте? Или такое же?
    > 😉

    Так "возьми" или "дай"?

    Я не понимаю, что ты имеешь в виду.

     

  • 1.4, zzz (??), 23:55, 28/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто-то до сих пор пользуется этим раздутым маркетинговым буллшитом?
     
     
  • 2.36, tsifra (?), 11:29, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    какие альтернативы?
     
     
  • 3.38, Andrey Mitrofanov (?), 11:47, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > какие альтернативы?

    Бооо-о-ольше!!  БООООООЛЬШЕ раздувать маркетинг булш1том!  </очевидно>

     
     
  • 4.57, tsifra (?), 23:28, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Непонятно, что имелось в виду
     
  • 4.59, tsifra (?), 23:45, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Мне правда очень интересно. Знаком с платформой с первой версии. Недавно внедрял версию 2.3. Негатива очень много. Но проверенные мной альтернативы не смогли дать нужную гибкость. В итоге костылями и скриптами пришлось доводить magento
     
  • 3.41, Аноним (39), 12:24, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну, начни отсюда: https://en.wikipedia.org/wiki/Category:Free_e-commerce_software
     
     
  • 4.56, tsifra (?), 23:27, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы насколько хорошо с предметной областью знакомы? Рассчитывал получить коментарии от профи. На мой взгляд magento это никак не меньше чем фреймфорк symfony
     
     
  • 5.58, пох (?), 23:41, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы насколько хорошо с предметной областью знакомы?

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

    > На мой взгляд magento это никак не меньше чем фреймфорк symfony

    вообще-то они совершенно перпендикулярны.

    мажента - готовый механизм для конкретной задачи. symphony - набор шестеренок, механизм надо собрать самостоятельно.

     
     
  • 6.60, tsifra (?), 23:56, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я оцениваю мадженту больше как каркас с готовой веб-витриной и всеми ништяками для seo и cms, который задаёт определённые правила и даёт определённые инструменты. В отрыве от каких-то других систем(вроде odoo/самописных) она неприменима даже для мало-мальски малого бизнеса. Точнее применима, но это боль. Отсюда и сравнение с symfony
     
     
  • 7.61, пох (?), 09:56, 30/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    механизм, да, не готовая машина. но время на сборку из шестеренок (часть из которых, традиционно, квадратные) все же экономит - хотя и ценой необходимости разобраться в уже собранном - но это все же быстрее, чем самому выпиливать надфилем.

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

    впрочем, средства пассивной безопасности никто не отменял.

     

  • 1.5, Аноним (5), 00:10, 29/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Стоит уточнить, что Magento это компания Adobe.
     
     
  • 2.32, Аноним (32), 09:48, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    с этого и надо начинать было, по криворукости программеры абоба уступают только хп. ненужно.
     
     
  • 3.42, sin (??), 12:58, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    magento принадлежит адобу не более полугода, вряд ли они кого-то, кроме топов, успели поменять.
    А так она каждые пару лет из рук в руки переходит
     

  • 1.18, Аноним (18), 04:50, 29/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Security module for php7 - Killing bugclasses and virtual-patching the rest!
    https://github.com/nbs-system/snuffleupagus
     
     
  • 2.30, Онаним (?), 09:02, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Suhosin уже был, спасибо, не надо.
     
     
  • 3.35, нах (?), 10:34, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    только он пищал и портил текст, и не работал.
    Ой, нет, простите, с vi перепутал - он даже не пищал, просто молча портил и не работал.

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

     

  • 1.19, Аноним (18), 04:54, 29/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://chaneyoon.tistory.com/253
    https://www.cdxy.me/?p=752
    https://github.com/brianlam38/Sec-Cheatsheets/blob/master/Web_Payloads.md#xxe
    https://github.com/brianlam38/Sec-Cheatsheets/blob/master/Web_Payloads.md#serv
     
     
  • 2.20, Аноним (18), 04:55, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    [Tutorial]Local File Include (LFI) https://underc0de.org/foro/bugs-y-exploits/(tutorial)local-file-include-(lfi)/
     
  • 2.21, Аноним (18), 04:57, 29/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Some common ways of upgrading from LFI to RCE
    https://www.rcesecurity.com/2017/08/from-lfi-to-rce-via-php-sessions/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру