История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

    Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

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


    История


    Только на первый взгляд кажется, что задача плагина элементарна — на самом деле, нужно было реализовывать кучу различных вариантов маскировки, заботиться, чтобы это работало с кэширующими плагинами, не конфликтовало с другими парсерами контента, любыми структурами пермалинков, каждой новой версией Wordpress, и так далее. Около 8 лет я поддерживал этот плагин, отвечал на баг репорты и порой отлаживал чужие сайты, доверчивые владельцы которых добровольно выдавали мне все пароли и явки.

    В какой-то момент мне стало понятно, что свои задачи я плагином не решаю уже много лет, поддерживать его код мне неинтересно, а больше ничего от его разработки я не получаю. Для справки уточню, что в описании и на страничке настроек плагина были ненавязчивые ссылки и кнопки с предложением сделать добровольное пожертвование — но за всю историю плагина мне пришло в районе 40$. Так что денежной мотивации не было, мотивации к развитию тоже, да и как-то порядком надоело, что каждый пользователь почему-то считает, что ты ему обязан, раз он таки поставил твою программу или плагин (кажется, многие пользователи действительно считают, что как только они ставят программу, какой-то добрый облачный дух выдаёт её разработчику мешок денег).

    Это я не к тому, что мир несправедлив, и я лил горькие слёзы обиды — просто чтобы было понятно, что несколько лет я поддерживал этот плагин исключительно из странного ощущения, что пользователи мне доверились, и я не могу их обмануть и прекратить поддержку. Когда я оглядываюсь на эти ощущения сейчас, то понимаю, что это было глупое ощущение, и нужно было спокойно похоронить плагин и заниматься своими делами. Но это ощущения меня из 2018 года — с появлением двух детей довольно сильно меняются приоритеты.



    Продажа


    И вот в какой-то момент пришёл некий гражданин, который мне предложил неплохую сумму денег за приобретение плагина. Честно говоря, я был уверен, что это какое-то кидалово, и общался с ним исключительно из любопытства (ну, как со всякими нигерийскими принцами). Скепсис ушёл, когда мы договорились использовать один доверенный сервис для подобного рода сделок. Тут уже стало интересно — было ощущение, что мне заплатят, но я подозревал, что в плагине быстро появится какая-то уязвимость, и поэтому специально подготовил письмо в команду поддержки wordpress, чтобы моментально заблокировать плагин. Но тому времени я уже почти поверил, что плагин действительно хотят приобрести для расширения портфолио компании, которая занимается SEO оптимизацией (именно такой мотивацией мне это объяснили).

    И знаете, что произошло дальше? Дальше мне честно пришли перечисленные деньги, и через несколько дней в плагин пришло мажорное обновление, в котором полностью изменился интерфейс и была переработана кодовая база (но оставлена совместимость) — так что это больше стало похоже на код из 2017, а не 2010 года (над этим поработал разработчик, как минимум, Middle уровня). Я был страшно рад — я нашёл заинтересованных людей, которые будут поддерживать мою игрушку, и которые уже принесли в неё много хорошего, радуя пользователей плагина.

    Тем не менее, я в течении двух недель отсматривал код плагина и его обновления, на всякий случай держа палец на отправке письма в команду wordpress. Но всё было отлично и я успокоился.



    Уязвимость


    Хотелось бы остановиться на этом месте и закончить это как success story, но увы. Через несколько месяцев со мной связались ребята из стороннего проекта по безопасности wordpress, и рассказали, что в плагине появился бекдор, и им интересны подробности того, как я передал права на него новому разработчику. Проверив, я убедился, что плагин действительно заблокирован на сайте wordpress. Дальше я переписывался с поддержкой wordpress, краткие результаты такие:

    • Они приняли от меня всю информацию, которая может помочь в инциденте;
    • Они очень долго не хотели рассказать мне информацию о уязвимости, и пришлось искать её самому;
    • Моё желание помочь было осмеяно, и меня ругали всякими плохими словами за то, что я “продал плагин спамеру” и “нагрузил их работой” (дословные цитаты);
    • Через некоторое время сотрудники wordpress таки сами исправили закладку и отослали мне на ревью (хоть один позитивный момент);
    • Плагин так и останется заблокированным, и передавать обратно права на него они не будут.

    Кстати, закладка оказалась отнюдь не злобным бекдором, а просто добавляла немного SEO ссылок ничего не подозревающим пользователям. Неприятно, но не так фатально, как могло бы быть.

    По итогам общения:
    • Было потрачено много времени для устранения уязвимости из-за нежелания сотрудничать со стороны техподдержки wordpress
    • Wordpress навсегда потерял один из плагинов и разработчика, который больше не будет там ничего публиковать и обновлять. Вряд ли кто-то будет об этом сожалеть, но тем не менее.


    UPD. По просьбам тех, у кого стоит плагин — «закладка» есть в версиях плагина 4.2.0 — 4.2.2. Версия 4.3 была исправлена поддержкой wordpress, версии до 4.0 были мои, а в версиях 4.0.0 — 4.1.0 «закладку» ещё не добавили. Скорее всего, ваш блог уже сам обновил плагин до безопасной версии 4.3.

    Выводы


    Для меня самыми интересным стали вопросы “продал бы я этот плагин, если бы знал, что его будут злонамеренно использовать?” и “сделаю ли я это снова, если будет возможность?”. С одной стороны — хотелось бы верить, что нет. С другой стороны — по сути у меня есть выбор между “хранить лояльность людям, которые даже не сказали спасибо за использование результатов моего труда” или “поехать с детьми в отпуск на море”. Ну… Не знаю. Искушение серьёзное.



    Можно говорить о том, что здесь для меня есть какие-то репутационные риски, но… Я не являюсь какой-то компанией, которую можно опозорить по всему интернету. И я не являюсь иконой мира разработки, я всего лишь один из миллионов разработчиков, которые периодически что-то пишут в open source. И скажем честно — нельзя потерять репутацию, которой нет. Удивительно, что после продажи плагина хоть один ресурс связал с ним моё имя. Так что — никаких репутационных ирисок.

    Отдельно замечу, что, в случае, когда риски касаются моей коммерческой деятельности, то здесь картинка совсем другая. На моей работе мне платят деньги, и у меня есть определённые обязательства. Неоднократно мне приходили различные предложения сомнительного характера, и я не принял ни одного — даже когда знал, что моё вмешательство или передачу данных никак не смогут отследить. Перед коммерческими проектами совершенно другая степень ответственности — и, как ни странно, не только потому, что мне там платят деньги, и потому что я там подписывал 100500 всяких бумажек. В первую очередь я чувствую ответственность потому что меня там ценят, доверяют, и это показывают. Поэтому я не могу предать оказываемое доверие. А, возвращаясь к open source… Тут картинка совсем другая. К примеру, помимо плагинов у меня есть ещё мобильные приложения. Они поддерживаются на нескольких ресурсах, в том числе на 4pda. И обычно пользователь (у меня их несколько тысяч) заходит туда, чтобы оставить сообщение вида “какашка не работает” (дословная цитата). Ну… Когда мне после этого приходит пулл реквест с обновлением бинарника из зависимостей приложения, то мне очень сложно не забить на него или не принять его вслепую, а вместо этого пересобрать его заново своими руками и выложить новый релиз.

    Помните — никто вам ничего не должен


    Повторюсь — моя цель — не пожаловаться на то, как всё плохо, а просто напомнить вам, что в open source никто ничего никому не должен. И нужно заботиться о безопасности любых сторонних компонентов, которые вы используете. Начиная с физического сервера, где крутятся ваши проекты (если он у вас “по знакомству”, то возможно всякое), продолжая фронтовыми и бэковыми компонентами, плагинами, фреймворками, CMS и так далее. И все проблемы в мире не решаются “вводом данных карточки в iframe”, как предлагалось в одной недавней статье.

    Что же делать


    Что вы можете помимо того, что следить за своей безопасностью? Как минимум, вы можете более ответственно относиться к тому, что вы используете труд других разработчиков. Посмотрите, что вы сейчас активно используйте. Купите лицензию для сломанного ещё два года назад вебшторма. Оплатите хитро полученный шаблон, которые вы использовали в большом заказе. Настройте автоматическое списание в пользу разработчиков вебпака. Перестаньте уже в каждом посте PVS Studio писать о том, как вы героически удаляете комментарии из своего кода, чтобы использовать этот инструмент бесплатно. Пожертвуйте уже 5$ разработчику Android KeePass — он об этом просит только по большим праздникам.

    Если нет денег — зайдите в issues и расскажите о проблеме, или отправьте свой пулл реквест. Вспомните ошибку, которая у вас возникает в экзотических условиях, повторите её и опишите разработчику. Сделайте пулл реквест из вашего форка, в котором вы исправили какой-то баг, и это исправление так и осталось только у вас.

    Если у вас нет ни денег, ни возможности участвовать в разработке — просто зайдите и скажите «спасибо» разработчику. Этим, как известно, сыт не будешь — но даже это радует разработчика и порой является стимулом для продолжения работы. Удивительно, что в устном общении принято благодарить за то, что для тебя делают — но этого правило так редко применяется в open source разработке.



    Кстати, эти правила относятся не только к разработке. Так же можно взять за правило — понравилась прочитанная с торрентов книга — купи её. Нравится музыка — поучаствуй в краудфанде нового альбома. Вроде бы это так просто, но мало кто это делает. Давайте помогать друг другу, и мир станет лучше. И безопаснее.

    А касательно того, что вы можете сделать, будучи разработчиком — сразу думайте, как обеспечивать поддержку вашего проекта. Может быть, вы сможете придумать, как привлечь к этому других разработчиков. Или предлагать дополнительные услуги — например, поддержку и отладку за некую фиксированную цену, или Enterprise решения, основанные на вашем проекте. Например, если бы я брал хотя бы по 10$ за поддержку плагина на сайтах пользователей, то, возможно, у меня был бы неплохой доход, который позволил бы не продавать плагин и дальше заниматься его разработкой. Многие считают монетизацию проекта чем-то плохим и изначально дурнопахнущим, но конце концов только она позволяет посвящать проекту достаточно много времени и заботиться о его качестве.

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

    Only registered users can participate in poll. Log in, please.

    А продали бы вы свою open source разработку?

    Support the author
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 35

      0
      Для меня самого загадка кто и почему поддерживает бесплатные проекты. Не указано что статья перевод хотя по стилю немного похоже. Поэтому обращаюсь к автору статьи и плагина. Есть люди которые знают зачем им это нужно. В данном случае автор получал не материальное вознаграждение в виде удовлетворения самолюбия. Возможно кроме этого было косвенное материальное вознаграждение в виде преимущества в резюме хотя я не утверждаю что это было. И наконец багрепорт который автор получил от тысяч юсеров.

      Теперь самое интересное. Если разработчики поставили в зависимость чей то код то вправе ожидать что этот код будет поддерживаться и не придётся переделывать проект. Так что если нет серьёзной мотивации то публиковать свою разработку не надо. Лучше сразу поставить цену и посмотреть сколько сотен тысяч скачиваний будет после этого.
        0
        Для меня самого загадка кто и почему поддерживает бесплатные проекты.

        Из чувства благодарности автору за удобный инструмент. По крайней мере у меня так.
          0
          Я наверное не совсем чётко выразился. Я имел в виду не кто платит а кто разрабатывает бесплатно. У меня на это просто не хватает ни времени ни сил.
            0
            Сам проект бесплатен, но они могут оказывать платную поддержку, например, если уж захотят заработать.
              +2

              Очень редко ты пишешь бесплатный проект потому что "почему бы и нет". Обычно ты решаешь какую-то свою частную задачу, а затем делишься решением. Если повезёт, то придут ещё разработчики и решение станет лучше и более общим.

            +2
            Для меня самого загадка кто и почему поддерживает бесплатные проекты
            Я пользуюсь многими бесплатными проектами. Периодически в этих проектах нахожу проблемные места, что-то могу улучшить для наших нужд. Порой после этого делаю пулл реквесты. Тем самым экономлю время других людей и делаю мир лучше ^_^

              +1
              Не указано что статья перевод
              потому что перевод

              В данном случае автор получал не материальное вознаграждение в виде удовлетворения самолюбия
              опять же автор вроде как четко написал что получил только головную боль и почти никакой благодарности от пользователей
                +1
                потому что перевод

                Видимо, вы описались — статья не перевод. Увы, понимаю, что хабр беспощаден к позднему редактированию комментариев...


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

                Вы очень чётко выдали краткое резюме четверти статьи, всё так.

                +1
                Многие делают небольшие проекты для CV, очень удобно, и потенциальному работодателю и разработчику.
                  0
                  Если разработчики поставили в зависимость чей то код то вправе ожидать что этот код будет поддерживаться и не придётся переделывать проект.

                  Если разработчики поставили в зависимость чей-то плагин или библиотеку, за которую не заплачены деньги(не важно хакнутая библиотека или автор просто не хочет брать деньги за нее) то они не вправе ожидать ничего. Библиотека имеет открытый исходный код — поддерживайте.
                  Вот если бы автор брал деньги за библиотеку, то это другой вопрос и прекращение поддержки нужно было бы правильно осуществлять.
                  Либо если библиотека принадлежит какому нибудь гиганту типа фейсбук, то ее тоже просто так не закроешь.
                  Кроме того если автор не берет деньги за свой опенсорс проект, это минимум означает, что он в любой момент может прекратить поддержку или перепродать права.
                    +1
                    Реальность такова что это правда. Поэтому прежде чем что-то юзать свободно распространяемое я смотрю на численность контрибьюторов. И анализирую вероятность того что проект будет закрыт и репозитарий удален. Как правило серьезные свободные проекты проекты не пытаются изменить правила в процессе игры (типа давайте вы подсядете на нас а потом мы включим счетчик). Есть проекты которые к сожалению закрылись. Например rethinkdb.com/blog/rethinkdb-shutdown — это тоже может произойти с каждым. Но представить что в вашем package.json или composer.json при следующем деплое половина зависимостей будет недоступна было бы катастрофой для многих проектов.
                  +2
                  Для меня самого загадка кто и почему поддерживает бесплатные проекты.

                  Мотивация у всех разная, могу сказать только про себя. Свои я выкладываю, если сделал что-то хорошее для себя. Уменьшение мировой энтропии при написании сотен отдельных программ и все дела.
                  Чужие я поддерживаю (деньгами или пулл реквестами), если ими пользуюсь — всё просто.


                  Не указано что статья перевод хотя по стилю немного похоже.

                  Прошу прощения, сказывается, что в основном читаю английские статьи.


                  В данном случае автор получал не материальное вознаграждение в виде удовлетворения самолюбия.

                  Всё так! Но этого обычно хватает, пока ты Junior разработчик.


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

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


                  И наконец багрепорт который автор получил от тысяч юсеров.

                  Багрепорты в основном касались некорректного поведения плагина в среде пользователя. Или их новых хотелок. Так что пользы в этом для автора не было.


                  Если разработчики поставили в зависимость чей то код то вправе ожидать что этот код будет поддерживаться и не придётся переделывать проект.

                  Вот я как раз писал о том, что нет никаких оснований этого ожидать. Кроме того, если код поддерживается, то всё наоборот — там будут новые версии, breaking changes и придётся переделывать интеграцию. Не приходится только в том случае, если проект заброшен.


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

                  В случае написания своей ОС, языка разработки, платформы, огромной библиотеки и так далее — да, требуется серьёзная мотивация. Но если мы говорим о плагинах, библиотеках и прочих довольно мелких сущностях — не вижу смысла искать серьёзную мотивацию. Как минимум, стоит выложить, чтобы кто-нибудь потом принял эстафету и допилил проект. Что же касается "выставления цены" — всегда было довольно сложно выкладывать такие вещи за деньги, отчасти потому, что долго не существовало подобных рынков. Сейчас они есть — но попробуйте, например, продать npm модуль… Задача не так тривиальна.

                    0
                    Или их новых хотелок.

                    — это кстати не плохой способ монетизации.
                    0
                    Если нет денег — зайдите в issues и расскажите о проблеме

                    … И через несколько багов вам начнут слать настойчивые письма «купите поддержку, недорого, всего 4килобакса в месяц, или мы на ваши issue будем просто забивать». Увы, из жизни, «разработчики ничего не должны же». Привет Brian West.

                    Для ngrep тоже сдал несколько багов, один даже оперативно зафиксили, второй требовал больше работы и вот он висит уже с пол года. Ощущение что автор раз в год заходит. Даже предложение немного задонатить на фикс было проигнорировано.

                    , или отправьте свой пулл реквест.

                    тут чуть лучше, но если не платишь — будут возвращать с «а у нас с патчем не собирается», хотя у нас собирается и мастер ветка, и релиз… И висеть по месяцу на каждом рассмотрении.
                      +2

                      Так никто и не обещает, что все open source проекты идеальны, и в них активные разработчики, которые готовы заниматься вашими вопросами. Там такие же люди, как и с этой стороны монитора. Вот я недавно отписал в issues и накидал pull request в проект snyk — там оно пока и зависло. Или, например, я уже неделю общаюсь с поддержкой сервиса ivideon. Денег от меня не хотят, но решить внятную и воспроизводимую проблему тоже не могут. Но я не отчаиваюсь. Точно так же много проектов, которые решают мои проблемы и принимают пулл реквесты. Не надо ожидать 100% выхлопа, но делать хоть что-то это всегда лучше, чем ничего не делать.

                        +1
                        Микро-ремарка от человека, который является QA-engineer — мне порой приходят баг-репорты, которые… кхм… вот же блин, я тупо никак не могу воспроизвести. Вообще никак. И не могу «починить», ибо поломку не вижу. Такое, к моему стыду, бывает.
                      0
                      Место этого плагина есть его чистая копия с исправлением ошибок и нотисов (майнеров я туда не вставлял)
                        0

                        Хорошо что форкнули, желаю удачи!


                        На всякий случай лучше ещё раз перепроверить весь код на предмет нетривиальных закладок — они могли возникнуть с версии 4 (момент передачи плагина). Той самой закладки с вставлением ссылок у вас нет, но мало ли. Долго я в этом не разбирался, а для особо желающих просто выложил мою старую версию (3 с чем-то) на гитхабе.

                          0
                          Спасибо за отличный плагин, использовали его на более, чем 50 сайтах. Новость про закладку увидел раньше, чем обновил все сайты. Взял версию вашу до продажи, форкнул, немного поправил нотисы и стилистику кода. Несколько раз перепроверил код — не нашел ничего не обычного.
                            0
                            Выпустили новую версию с поддержкой YOURLS сокращателя ссылок
                          +1
                          > кто и почему поддерживает бесплатные проекты
                          > Лучше сразу поставить цену и посмотреть сколько сотен тысяч скачиваний будет после этого.

                          В WordPress ситуация, на мой взгляд, такова: если ты не ставишь плагин на wordpress.org, то видимость его будет минимальна в течение долгого времени. Гугл будет выдавать с wp-org всегда на первом месте, практически по всем ключевым словам.

                          Отсюда — «freemium» модель. Мы ее активно используем в плагине WPGlobus. Если мы перейдем на полностью платную схему, уверен, мы исчезнем очень быстро.

                          P.S. Статья, конечно же, не перевод. Вот тут есть вся история:
                          plugins.svn.wordpress.org/wp-noexternallinks/tags

                          P.P.S. Автору — спасибо за публикацию. Полезно знать такие вещи.
                            +1
                            Вот тут есть вся история

                            Так нагляднее: plugins.trac.wordpress.org/log/wp-noexternallinks
                              0
                              WPGlobus мне понравился, хотя я юзал его еще в ранней версии. Сейчас в проекте, над которым я работаю, используется WPML. Это жестокий гемор. Я бы посоветовал владельцам перейти на WPGlobus, но это уже дохрена работы.
                                0
                                Спасибо!

                                Нас пару недель назад временно выкинули из репозитория по наводке одного [неприличное слово]. После трех бессонных ночей нам удалось вернуться в строй, но за это время сеть полностью замусорилась копиями сообщений о якобы уязвимости. Было ужасно обидно попасть на такую «подставу», особенно учитывая, что речь шла не о нашем коде, а о 3rd-party библиотеке… Но — это уже off-top. Постараюсь найти время на подробное описание нашего случая.
                              0
                              и нужно было спокойно похоронить плагин и заниматься своими делами

                              и похоронить wordpress и забыть что он существует и попросить всех остальных это сделать
                                0

                                Не хочу начинать холивар, но надо сказать, что со всеми его минусами, у него есть и достоинства, которых я до сих пор не видел в других схожих проектах (в последний раз смотрел пару лет назад, что-то могло поменяться):


                                • Самая богатая экосистема тем и плагинов, которая позволяет быстро собрать из него что угодно;
                                • Удобное редактирование, управление пользователями, ролями, пермалинками и ещё кучей всего;
                                • Если уметь его готовить и кэшировать, то он не столь прожорлив, как говорят легенды.

                                Так что на нём можно быстро, качественно и без затрат на разработку поднять какой-нибудь информационный стартапчик вроде apparat, которому я когда-то помогал с настройкой. А мы знаем, что в современном мире выживает только тот, кто умеет быстро запускать прототипы. А если взлетело — можете нанять разработчиков и перетащить контент куда угодно.

                                  +3
                                  WordPress — это инструмент. Как и любым инструментом, им можно пользоваться с умом, или без него. Если пользоваться правильно, то ничего хоронить не надо.

                                  Да, WP далеко не оптимально сконструирован ни с точки зрения базы данных, ни по многим другим критериям. Однако, эта архитектура придает WP гибкость. Для огромного количества сайтов WP удобен и достаточен. Прост и бесплатен. А для больших и серьезных проектов — на здоровье, нанимайте сто человек и — вперед!
                                  0
                                  jehy Скажите, а как сейчас убрать уязвимость из самой последне версии плагина?
                                  Так как установка версии 3.5.9.9 полностью сбрасывает все настройки, и все ссылки становятся открытыми
                                  А материалов огромное количество — в ручную нет возможности их закрыть снова
                                    0

                                    Если у вас была версия 4+, то она, видимо, поменяла настройки в свой формат — откатиться к третьей будет нельзя, не вернув руками все настройки. Можно поставить версию 4.3 из репозитория wordpress — в ней уязвимость была исправлена сотрудниками wordpress (кстати, по идее, у вас блог сам должен был обновиться до этой версии плагина). Для того, чтобы её поставить, вам потребуется SVN клиент, которого нужно натравить на эту версию. Ну или вы можете поставить версию от mihdan, он дал ссылку чуть выше — она, скорее всего, тоже работает с настройками в формате 4+. Но уточню на всякий случай ещё раз, что к версиям 4+ я отношения не имею и никакой моральной ответственности за них не несу.

                                      0
                                      Сейчас вернул назад 4.3, все ок. Спасибо за важное уточнение, что сотрудники Wordpress исправили баг (было бы хорошо уточнить это в статье, а то народ кинется что-то делать, как я)))). Спасибо за предупреждение
                                        0

                                        Это я просто не был уверен, что плагин обновится до 4.3, будучи заблокированным. Доберусь до дома — уточню в статье, спасибо.

                                    +2
                                    Если у вас нет ни денег, ни возможности участвовать в разработке — просто зайдите и скажите «спасибо» разработчику.
                                    Спасибо разработчикам WebStorm…
                                    //смущенный смайлик
                                      +2
                                      Чтобы заниматься поддержкой бесплатного плагина, это нужно очень сильно любить людей. Помимо благодарных пользователей, попадаются даже такие, кто пытается шантажировать: вот если вы типа не сделаете фичу, которая нужна нам (или даже интегрировать в наш проект), то мы поставим вашему плагину оценку в одну звезду. Поэтому я всегда пишу дисклеймер, что плагин мол бесплатный и его поддержкой я буду заниматься только тогда, когда на то есть время и вдохновение :-)
                                      • UFO just landed and posted this here
                                          0
                                          Автор молодец. Сам бы продал свои проекты для WP, которые сейчас имеют хорошую популярность, но поддерживать их уже нет времени.
                                          Кстати некоторые пользователи неожиданно спрашивают кошелёк и перечисляются туда ну совсем не неожиданные деньги.

                                          Only users with full accounts can post comments. Log in, please.