Search
Write a publication
Pull to refresh
121
0

Venture Investor

Send message

WP Creator Calculator 3.0 — создание калькуляторов

Reading time11 min
Views29K
Вышла новая версия плагина! Версия 3.5.



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

Основные изменения:
  • Полностью переписан алгоритм построения формулы
  • Упрощена административная панель
  • Добавлена функция AJAX расчетов
  • Добавлена возможность отправлять письма расчетов
  • Исправлены все недочеты и ошибки предыдущей версии
  • Изменен принцип работы Checkbox
  • Добавлены значения по умолчанию, дабы избегать ошибок “Division by zero”
  • Запоминаются выбранные значения в форме после расчета
  • Добавлено поле jQuery
  • Добавлен Виджет калькулятора
  • Удалены лишние поля: Сортировка (теперь просто сортируем мышкой, Drag and Drop), CSS (у каждого блока и так есть уникальный класс)
  • Изменена структура таблицы в базе

Читать дальше →

Ваш сайт тоже позволяет заливать всё подряд?

Reading time4 min
Views52K
Один французский «исследователь безопасности» этим летом опубликовал невиданно много найденных им уязвимостей типа arbitrary file upload в разных «написанных на коленке», но популярных CMS и плагинах к ним. Удивительно, как беспечны бывают создатели и администраторы небольших форумов, блогов и интернет-магазинчиков. Как правило, в каталоге, куда загружаются аватары, резюме, смайлики и прочие ресурсы, которые пользователь может загружать на сайт — разрешено выполнение кода PHP; а значит, загрузка PHP-скрипта под видом картинки позволит злоумышленнику выполнять на сервере произвольный код.

Выполнение кода с правами apache — это, конечно, не полный контроль над сервером, но не стоит недооценивать открывающиеся злоумышленнику возможности: он получает полный доступ ко всем скриптам и конфигурационным файлам сайта и через них — к используемым БД; он может рассылать от вашего имени спам, захостить у вас какой-нибудь незаконный контент, тем подставив вас под абузы; может, найдя параметры привязки к платёжной системе, отрефандить все заказы и оставить вас без дохода за весь последний месяц. Обидно, правда?

Как ему это удастся?

Защита от SQL-инъекций в PHP и MySQL

Reading time26 min
Views259K
К своему удивлению, я не нашёл на Хабре исчерпывающей статьи на тему защиты от инъекций. Поэтому решил написать свою.

Несколько пространный дисклеймер, не имеющий прямого отношения к вопросу
Давайте признаем факт: количество статей (и комментариев) на тему защиты от SQL-инъекций, появившихся на Хабре в последнее время, говорит нам о том, что поляна далеко не так хорошо истоптана, как полагают некоторые. Причём повторение одних и тех же ошибок наводит на мысль, что некоторые заблуждения слишком устойчивы, и требуется не просто перечисление стандартных техник, а подробное объяснение — как они работают и в каких случаях должны применяться (а в каких — нет).

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

Я не буду пытаться изображать полиглота и писать рекомендации для всех БД и языков разом. Достаточное количество опыта у меня есть только в веб-разработке, на связке PHP/MySQL. Поэтому все практические примеры и рекомендации будут даваться для этих технологий. Тем не менее, изложенные ниже теоретические принципы применимы, разумеется, для любых других языков и СУБД.

Сразу отвечу на стандартное замечание про ORM, Active record и прочие query builders: во-первых, все эти прекрасные инструменты рождаются не по мановению волшебной палочки из пены морской, а пишутся программистами, используя всё тот же грешный SQL. Во-вторых, будем реалистами: перечисленные технологии — хорошо, но на практике сырой SQL постоянно встречается нам в работе — будь то legacy code или развесистый JOIN, который транслировать в ORM — себе дороже. Так что не будем прятать голову в песок и делать вид, что проблемы нет.

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

Ещё только начав интересоваться темой защиты от инъекций, я всегда хотел сформулировать набор правил, который был бы одновременно исчерпывающим и компактным. Со временем мне это удалось:

Правила, соблюдение которых гарантирует нас от инъекций


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

Всего два пункта.
Разумеется, практическая реализация этих правил нуждается в более подробном освещении.
Но у этого списка есть большое достоинство — он точный и исчерпывающий. В отличие от укоренившихся в массовом сознании правил «прогонять пользовательский ввод через mysql_real_escape_string» или «всегда использовать подготовленные выражения», мой набор правил не является катастрофическим заблуждением (как первое) или неполным (как второе).

Но вперёд, читатель — перейдём уже к подробному разбору.
Читать дальше →

Как украсть миллион?

Reading time5 min
Views32K
0x00 Предисловие

В детстве мы смотрели фильмы Хакеры, Взлом, Пароль Рыба-меч, и прочие творения голливуда. Не смотря на юный возраст, вдохновившись мы искали информацию о хакинге, фрикинге везде где только было возможно. Помню тогда еще компакт-диски ходили с наборами выжимок с разных эхо-конференций. Осваивали программирование, постигали устройство IP-сетей, операционок и всяких железяк. Игры в промышленный шпионаж и прочие прелести детства. Мечта украсть миллион и желательно баксов с помощью компютеров прочно сидела в наших головах. Но… детство проходит, школа заканчивается, попытки собственного бизнеса, работа в различных телекоммуникационных компаниях, и вот уже желание своровать сформировалось в желание построить честный высокотехнологичный бизнес, что оказалось сложнее, и следовательно интересней. Однако, не зря говорят, возможность украсть создает преступника.
Читать дальше →

Как накосячить с типографией: подборка работающих способов

Reading time7 min
Views120K

Тут наверняка есть косяки, просто мы ещё не открыли коробку

За три года нас с коллегами сотни раз било по голове ручкой от грабель при работе с типографиями. Мы списывали целые контейнеры криво напечатанной упаковки для игр, переделывали в авральном порядке тиражи, отправляли назад брак, который нам пытались выдать за нормальную печать, и натыкались на банальное кидалово.

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

6 примеров, роняющих IE6

Reading time2 min
Views2.3K
Кому не ненавистен IE6? К сожалению, разработчикам приходится иметь дело с этим устаревшим браузером из-за значительного количество использующих его людей.

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

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

Начнем с самого длинного:
Читать дальше →

SQL injection для начинающих. Часть 1

Reading time5 min
Views805K

Приветствую тебя, читатель. Последнее время, я увлекаюсь Web-безопасностью, да и в какой-то степени работа связана с этим. Т.к. я всё чаще и чаще стал замечать темы на различных форумах, с просьбой показать, как это всё работает, решил написать статью. Статья будет рассчитана на тех, кто не сталкивался с подобным, но хотел бы научиться. В сети относительно много статей на данную тематику, но для начинающих они немного сложные. Я постараюсь описать всё понятным языком и подробными примерами.
Читать дальше →

20 сервисов и советов для веб разработчиков

Reading time6 min
Views5.7K
Ниже представлены полезные ссылки и советы исходя из моего личного опыта. Старался указать только то что может быть новым для разработчиков, поэтому ресурсов типа FireBug и других общеизвестных в списке нет.

NounProject — лучшая и наибольшая коллекция SVG картинок

В связи с тем что кроссбраузерная поддержка SVG не идеальна, я делаю следующим образом, нахожу на этом сайте SVG картинку которая мне нужна, открываю ее в блокноте и в ручную корректирую цвет и размеры (иногда и саму картинку), потом открываю файл с картинкой в браузере, делаю скриншот картинки, обрезаю ее в фотошоп и сохраняю в gif с наимешьшими параметрами. Вывод — наилучшее качество картинки, так как качество SVG не изменяется при уменьшении или увеличении, и занимает наименьшее количество места, и как следствие, отсутствие дефектов, как например, размытые края, неполное окрашивание когда цвет изменяется заливкой и тд.

Codebeautifier — кроссбраузерная подготовка CSS файлов c уменьшением веса самого CSS файла.

Так как разные браузеры, в частности IE воспринимают некоторые параметры CSS по разному, это доставляет проблем при кроссбраузерности. С помощью этого ресурса можно создать CSS файл который будет идентично работать во всех браузерах.

Iterm2 — лучшая консоль для mac OS и замена страндартному терминалу.

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

Spritebaker — кодирует изображения и шрифты в base64 для последующей возможной вставки в CSS, что увеличивает скорость загрузки

Web developer — плагин для Firefox дающее множество возможностей.

Например, смотреть/вносить/редактировать куки, просматривать топографию для симметрии, инфо по картинкам и прочее.

ColorZilla — плагин для firefox позволяющий кликнуть мышкой на любой точке экрана и получить код цвета.

Не нужно делать скриншот, потом закидывать в фотошоп и кликать на цвете. Просто устанавливаем плагин и все. Очень удобно.

DataUrl — генерирует код из изображения.

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

Pjax — плагин которой позволяет изменять содержимое страницы без ее перезагрузки.
Читать дальше →

Путешествия моего почтового адреса по базам спамеров

Reading time2 min
Views23K
Эта замечательная история началась в декабре прошлого года, когда жена спросила моего совета по поводу одной интересной акции на купонном сайте. Для того, чтобы посмотреть историю, потребовалось указать адрес электронной почты.

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

Читать дальше →

Создаем кассетный магнитофон при помощи HTML5 Audio

Reading time2 min
Views19K


Если вы не знаете, что такое кассета, то вы, вероятно, родились в эпоху хай-тэк, эпоху, которая, несомненно, является интересной и новаторской. Но если же вы имеете представление, что такое аудио-кассеты, то скорее всего вы принадлежите к старшему поколению, динозаврам, которые знают, что объединяет карандаш и аудио-кассету. :)
Читать дальше →

Ремесло программиста. Золотые правила

Reading time14 min
Views29K
imageДанный пост представляет собой выдержку «золотых правил» из примечательной книги Питера Гудлифа «Ремесло программиста».

Кто-то освежит память, кто-то сверится как с чек-листом, а кто-то заинтересуется и прочтет книгу. Т.к. пост получился достаточно объемным, можно добавить его в закладки и периодически к нему возвращаться.
Читать дальше →

Moqups — новый сервис для создания макетов UI

Reading time1 min
Views90K
Как характеризуют сервис сами разработчики, Moqups — это «изящное HTML5-приложение для создания макетов, концептов пользовательского интерфейса, прототипов, в зависимости от того, как вы сами это называете».



Для Chrome есть отдельное приложение.

На данный момент доступно более 60 шаблонов элементов, экспорт в PDF и PNG, клавиатурные шорткаты, группировка объектов, привязка к сетке и проч.

Проект находится в стадии активной разработки и открыт для критики, помощи и предложений.

Насколько крупны порносайты?

Reading time3 min
Views77K


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

Согласно отчету принадлежащей Google рекламной сети DoubleClick, которая отслеживает посетителей по cookies, в числе 500 самых посещаемых сайтов сети есть десятки порнографической направленности. Xvideos, самый крупный порносайт мира, получает 4,4 миллиарда просмотров страниц в месяц, что в три раза больше, чем CNN или ESPN, и в два раза больше, чем Reddit. LiveJasmin, YouPorn, Tube8 и Pornhub — огромные веб-сайты, посещаемость которых ниже лишь гигантов уровня Google или Facebook.
Читать дальше →

Развертывание радиостанции на GNU/Linux. Часть I

Reading time5 min
Views20K
Прежде всего, хочу сказать, что я читал на хабре много топиков о развертывании радио, но ни один не дал мне исчерпывающей информации.
Я решил все сделать сам. Это не какой-то проект или стартап, а просто just4fun. Возможно, это покажется полезным для вас.
Итак, я использовал только свободное ПО в развертывании радио-стрима, так что пользователи window$ и ma o$ могут дальше не читать ;). Хотя нет, все же прочитайте, возможно это откроет вам GNU/Linux с новой стороны.

Читать дальше →

Алгоритм проведения IT собеседования

Reading time4 min
Views59K
В сегодняшнем посте я хочу обсудить тему — эффективного IT собеседования.
Она родилась из комментария к одному из моих прошлых постов: «Было бы здорово почитать развернутый рассказ про то, как собеседовать людей.» Собственно, сказано — сделано!

Проведение себеседования также тривиально, как этот кубик рубик, если конечно вам не важен результат.

image

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

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

Если вам эта тема интересна и есть чем поделится с хабрачитателями — прошу под кат.
+ Бонус в конце статьи.
Читать дальше →

Сервер OpenVPN на CentOS

Reading time2 min
Views23K
Установка сервера OpenVPN на CentOS и работа с ним мне показалась слишком сложной, поэтому я постарался максимально автоматизировать эти процессы. Сервер настраивается автоматически и начинает работать сразу после установки.

При создании пользователя генерируется конфигурационный файл, либо Windows-клиент для него.

Читать дальше →

Настройка резервного копирования Linux-сервера за 5 минут

Reading time3 min
Views66K
Передо мной возникла необходимость настроить резервное копирование на новом Linux-сервере, задачка эта оочень важная, но уж больно скучная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. По этому я попробовал нагуглить готовое решение для этой задачки и в результате наткнулся на backup-manager — замечательный опенсорсный набор bash-скриптов, позволяющих:
  • архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также «черный список» файлов, которые копироваться не будут.
  • делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
  • делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
  • шифровать архивы.
  • копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.

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

Автоматическое клонирование серверов на виртуальные машины по крону

Reading time6 min
Views5.2K

Постановка задачи


Описание проблемы


В работе используется большое количество физических серверов на базе Debian GNU/Linux. Разработчикам часто бывает нужно предоставить на растерзание клоны этих серверов, каждый раз клонировать руками неэффективно. Примечание: конкретный дистрибутив при описываемом методе не важен, метод очень легко адаптируется под любой дистрибутив.

картинка для красоты


Задача


Сделать автоматическую систему клонирования боевых серверов в виртуальные машины по крону.

Что получилось


virt_server> p2v.py foo full
WORKING WITH SERVER: 'foo'
READING CONFIG FOR 'foo'
CHECKING LOCAL CONFIG
CHECKING LOCAL CONFIG FOR 'foo' COMPLETED SUCCESSFULLY
CHECKING REMOTE CONFIG
CHECKING NODUMP FLAG: "lsattr -d /home/backupman/dumps | egrep '[\\w-]+d[\\w-]+[ ]/data/dumps'"
CHECKING REMOTE DUMP: 'sudo /sbin/dump a0f /dev/null /dev/null'
CHECKING IF WE ARE ABLE TO SSH TO: "ssh -T backupman@foo 'if [ -d /data/dumps ] ; then exit 0 ; else exit 1 ; fi'"
CHECKING REMOTE CONFIG FOR 'foo' COMPLETED SUCCESSFULLY
DUMPING FILESYSTEMS
GETTING THE DUMPS
STOPPING VM: foo2 
MAKING FS TYPE: ext3 ON PARTITION: /dev/mapper/foo
RESTORING DUMPS FOR: foo
INSTALLING BOOTLOADER FOR: foo
RESTORING CONFIG FOR: foo
STARTING VM: /etc/xen/foo.xm
А как получилось?

Вещи, о которых следует помнить, программируя на Python

Reading time5 min
Views64K

Дзэн Питона



Изучение культуры, которая окружает язык, приближает вас на шаг к лучшим программистам. Если вы всё еще не прочли «Zen of Python», то откройте интерпретатор Python и введите import this. Для каждого элемента в списке вы найдете пример здесь

Однажды моё внимание привлекло:
Читать дальше →

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Reading time14 min
Views347K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →

Information

Rating
Does not participate
Location
California, США
Date of birth
Registered
Activity