• Почему я не люблю PHP

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

      Я отношусь к PHP с той стороны, которая занята его размещением и безопасностью. Конечно, сейчас никаких трудов не составит запихнуть код с интерпретатором в контейнер, но вот безопасность...

      Смотрите - каждый раз, когда вы обращаетесь к своему коду через веб-интерфейс, вы запускаете интерпретатор, который считывает все файлы и формирует ответ. В том числе и файл, где вы так заботливо указали доступы к своей базе данных. И не спешите шифровать его - ведь ключ для расшифровки вам тоже надо где-то брать, верно?

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

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

      И не беда, если у вам там обычный блог или сайт-визитка. А если интернет-магазин? А если финансовое приложение?

      Только не говорите, что в финтеке нет PHP. Есть. Я лично видел.

      Читать далее
    • Как я перенес dedic.ru на github pages и остался доволен

        Когда-то давно я достаточно плотно занимался организацией разного рода хостингов. В техническом плане, конечно — настройка серверов, конфигурация панелей управления и прочими сопутствующими штуками.

        Затем у меня возникла идея записывать разные решения и умные мысли на сайте, чтоб популяризировать эту тему, так как в рунете на тот момент ничего про администрирование хостинга не существовало. И назвал его dedic.ru.

        Для движка сайта я почему-то выбрал Drupal а не Wordpress, в последствии сам себе не смог объяснить этот выбор. Тогда мне казалось, что Drupal более гибкий, удобный и логичный.
        Мое первое разочарование было в момент выхода шестой версии Drupal. Я просто не мог перенести туда свой текущий проект — постоянно что-то отваливалось, то таксономия, то форум, то еще что-то.

        В результате мне пришлось оставить dedic.ru в режиме read-only и попытаться продолжить начатое на других сайтах. Но к тому времени уже появилось достаточно много сайтов на эту тематику и мои попытки не взлетели. Да и у меня самого начали меняться интересы — облака, безопасность и автоматизация.

        И вот одним вечером я задумался — а как собственно можно законсервировать сайт таким образом, чтоб не платить за его содержание?
        Читать дальше →
      • Что грозит Burger King

          Для тех, кто еще не читал новости о том, как Burger King в своем мобильном приложении интегрировал нежелательное программное обеспечение AppSee, публикую краткую информацию:

          • AppSee — это malware-сервис, который можно интегрировать в мобильное приложение и получить видеозапись экрана для какой-то там аналитики;
          • Как видно из перехваченного видео — данные передаются без какой-либо обработки, а уже в самом AppSee видео обрабатывается и данные держателей карт (ДДК) закрашиваются черными квадратами, как они утверждают;
          • Представители Burger King заняли позицию, что они ничего не нарушают, так как данные от AppSee им уже приходят после обработки и они не видят в них ДДК, как они утверждают.

          Даже если поверить, что оба утверждения верные, то все равно Burger King своими действиями нарушает стандарт безопасности отправку видео файла на AppSee: нельзя передавать с номером карты (PAN) дату истечения и имя владельца. Про телефон я вообще молчу. Это прямое нарушение PCI DSS в частности и здравого смысла вообще. Обычный MITM в публичном WiFi организовать утечку ДДК, а номер телефона — вообще легчайший способ получить дубликат sim карты в любом отделении с помощью имени владельца и базовых навыков графического редактора.

          Сама компания Burger King прошла проверку стандартам, а значит попадает под все карательные меры, а именно:
          Читать дальше →
        • Что вы можете реально сделать за 1000 рублей или ошибки фрилансеров

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

            А задания были вот какие:
            • Создание сайта-визитки crossolt
            • Фото сессия от Assargin
            • Хабропицца — andorro
            • Провокационный видеоролик от alexkl
            • Фото недостроенной АЭС от neochapay

            Напоминаю, что за каждое задание я оценивал в 1000 рублей. Ну а теперь — результаты и выводы.
            Читать дальше →
          • Защита от DDOS атаки случайными аргументами при помощи Nginx

              Я встретился с новым типом ботнета. Если старый долбил только в главную, то новый действует иначе. Он посылает множество запросов вида
              GET someurl/?t1555ss5326=5326, где someurl — найденный ботом php скрипт.
              Но если атакуемый сайт поддерживает ЧПУ, то такие запросы к нему должны отсутствовать в принципе. ЧПУ сейчас является стандартом де-факто, по этому можно смело отрезать такие запросы, логируя IP ботов.
              Для этого очень удобен nginx, и его переменная is_args, которая имеет значение "?", если в URI идут аргументы. Базовая конструкция выглядит так:

              if ($is_args = "?") {
              return 403 444;
              }

              Очень просто и красиво, правда?
              Вот как выглядит LA после включения этой защиты:
              load average: 1.50, 3.09, 6.96
              Текущий ботнет из ~20000 зомби, делают 5-8k одновременных запросов.
            • Тихо и незаметно weblancer.net стал полностью платный

                image
                Все началось в феврале. Тогда у фриланс-биржи появились платные аккаунты для фрилансеров, а точнее три тарифных плана: Базовый, Оптимальный и Максимальный.
                Но оставался Начальный тариф, он бесплатен, но в нем мало заявок и комиссия выше. Кроме того, фрилансеры с Начальным тарифом не включены в каталог.

                Каждый раз, когда тариф подходил к завершению, я выбирал Начальный и докупал только заявки, если их нехватало.
                Так было до сегодняшнего дня, когда я зашел и не смог выбрать Начальный тариф.
                Конечно, я понимаю, что проект требует монетизации, и одних % комиссии мало, однако мне очень непонравились две вещи:

                1. Я не получил никаких оповещений о закрытии Начального тарифа, а в его описании отсутсвуют временные лимиты.
                2. Пополнить счет можно только по Webmoney, что прекращает работу с сервисом тех фрилансеров, у которых Yandex.Деньги или карты (Paypal).

                А вы готовы платить за этот сервис?

                P.S. Возможно у вас есть выбор тарифа Начальный. Пока еще есть…
              • Как сделать облачный (кластерный) хостинг за пару копеек*

                  Три года назад у меня была интересная задача. Необходимо было собрать платформу, объединявшую несколько стоек с серверами в единое целое, для динамического распределения ресурсов между сайтами написанным для LAMP платформы. Причем так, чтоб вмешательство в код сайтов было минимальным, а еще лучше — вообще отсутствовало.
                  При этом никаких дорогих решений вроде Cisco Content Switch или дисковой полки с оптоволокном использовать нельзя — не хватало бюджета.
                  А кроме того, разумеется, в случае выхода одного из серверов из строя — это не должно было влиять на работу платформы.
                  Читать дальше →
                • Как быть сисадмином и прожить до 100 лет

                    Много раз пользовался всякими книжками от O'Reilly. То вдруг на Perl рецептик приготовить, то в Bind срочно чего-то поправить. Или вдруг надо поговорить на «программерской фене» — регулярные выражения, стало быть. Вся кухня в
                    любимом издательстве есть. Но жизнь сисадмина, это ведь не только чтение книг и документаций. Сисадмин живой человек. Ему также не чужды радости человеческой жизни. Какое-то время, пока ты молод, кажется, что ни китайская лапша, ни обеды по-быстрому на рабочем месте, не могут свернуть тебя с пути IT- джедая. Пепси, пироги с котятами, фаст-фуды, многие проходили эту школу выживания. Пока однажды не начинаешь искать между строк в книгах O'Reilly рецепта домашней пиццы.
                    Читать дальше →
                  • Как я продавал софт в суровые 90-ые



                      imageСейчас трудно кого-то удивить такой вещью, как продажей ПО. Мы привыкли покупать софт на дисках или скачивать и платить вебманями/кредиткой.

                      Однако давно, когда интернет был чем-то загадочным, а слово диск вызывало ассоциацию с пластинками для проигрывателя, продажа и покупка ПО шла полным ходом.

                      В начале я записывал программы для ПК-01 Львов и пытася их продавать на местном одесском радиобазаре, который почему-то постоянно менял свою дислокацию.
                      Читать дальше →
                    • Распространяется ли гарантия на зарядки для Макбуков?


                        Знакомая проблема, не так ли? Произошло какое-то повреждение в проводе или в коннекторе со штырьками. Казалось бы — что проще поменять по гарантии?

                        Однако многие покупатели сталкиваются с тем, что в сервисных центрах отказываются менять зарядки, мотивируя тем, что Apple считает их расходным матерьялом и не дает гарантию. Все бы ничего, однако цена на пластиковую коробочку с проводком составляет 80-100$.

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

                        Хотелось бы знать — сталкивались ли вы с такой проблемой? Как на нее отреагировали в сервис-центре? А может быть вы сами успешно чинили такую полмку и расскажите как это сделать самостоятельно?
                      • Защита Assassin's Creed 2 под серьезной угрозой

                          Удар, как обычно это бывает, был нанесен внезапно и со стороны, с которой его не ожидала Ubisoft. Это была не отвязка игры от проверки серверов и не реверсирование протокола.

                          Просто геймеры купившие лицензионную игру, и обладающие широкополосным доступом к интернет, достигли точки критического числа одновременных подключений и сервера DRM рухнули словно от DDOS атаки.

                          Надеюсь, это создаст прецедент и подобную защиту запретят, как ранее запретили StarForce.
                        • Про оптимизацию кода

                            Кодер Один мой знакомый получил работу в очень престижной конторе по разработке устройств связи уоки-токи, мобильные и так далее. Контора надо сказать очень большая и входит в ТОП-50 по этой сфере индустрии.

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

                              В качестве распределенного хостинга возьмем классический пример — создание блогосервиса на основе mu-Wordpress.
                              Задача — при ограниченном бюджете собрать отказоустойчивую (насколько это возможно) геораспределенную систему. Соответственно все оборудование берется в аредну в различных Дата-Центрах.
                              И тут следует сказать что не все Дата-Центры одинаково полезны. Высококачественные сдают сервер за 800$, а у низкокачественных вполне можно взять примерно такой же сервер в аренду уже за 100$. И именно эти особенности надо учитывать при создании геокластера.

                              Теперь о небольших хаках. По умолчанию в mu-Wordpress функция отдачи загружаемого контента сделана крайне неудачно — через PHP. Соответственно она была заменена на загрузку отдельным сервисом и вставкой загружаемого контента прямой ссылкой на статику.
                              Вторым хаком была модификация контроля кеширования. Кроме указаний кешировать статичные элементы дизайна был введен еще такой хак, который запрещал кешировать запись на время ее обсуждения (по умолчанию — 14 дней), а уже после она отдавалась с заголовком разрешающим кеширование. Кроме того хитро кешировались фиды RSS.
                              Финальным хаком стала система синхронизации БД — каждый INSERT/DELETE/UPDATE выполнялся на «соседе». Получился такой себе софт-рейд в контексте MySQL+PHP.
                              Читать дальше →
                            • Новогодний подарок хостерам: Как разместить на сервере 10000 клиентов или даже больше

                                image

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

                                Следует отметить, что под клиентом воспринимается обычный аккаунт на LAMP (Linux+Apache+Mysql+PHP), с одним-двумя виртхостами и работающим со всеми опциями php.ini по умолчанию. Основное — это 16MB RAM и 30 сек исполнения. Вполне достаточно для большинства движков — Wordpress, Drupal и Joomla.
                                Читать дальше →