Как стать автором
Обновить
-1
0
Wladimir @Am1GO

Вишенка

Отправить сообщение

Защита от ботов, основанная на различии в работе с большими числами в JavaScript и PHP

Время на прочтение8 мин
Количество просмотров19K
Недавно мне пришлось разбираться с защитой от ботов, используемой на нескольких довольно популярных ресурсах.
На первый взгляд защита показалась обычной установкой куки через javascript, справиться с которой — дело 15-ти минут. В самом деле, после небольшого исследования стало понятно где что делается и какие параметры куда передаются, остается только переписать небольшую функцию с javascript на php и дело в шляпе.
Но все оказалось не так просто. И хотя в итоге защита была сломана, на это потребовалось далеко не 15 минут, и сам принцип защиты оказался для меня новым и довольно интересным.

Итак, обо всем по порядку.
Читать дальше →
Всего голосов 81: ↑61 и ↓20+41
Комментарии44

Опыт сертификации CISM

Время на прочтение5 мин
Количество просмотров28K
image

Несколько месяцев назад я решился сдавать на CISM. Хотел бы поделиться опытом подготовки, прохождения экзамена.

Что такое CISM?


Certified Information Security Manager. Детальное описание можно найти на isaca.org.

В целом – это один из наиболее почитаемых сертификатов в области информационной безопасности. Вот, например, один известный сайт по ИБ включил CISM в топ сертификаты для 2012г.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии21

Дата-центры: кто во что горазд

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

На Хабре уже писали про дата-центр HP в городе Биллингем (Англия), который охлаждается с помощью энергии ветра Северного моря, и о дата-центре, расположившемся в «водяном баке». И хотя каждый достоин отдельного внимания, мы составили подборку самых, на наш взгляд, интересных историй.

Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии26

Проброс видеокарты в виртуальную машину

Время на прочтение6 мин
Количество просмотров181K
Говорят, что современные аппаратные технологии поддержки виртуализации (VT-d у Intel, IOMMU у AMD) позволяют отдавать физическое устройство на шине PCI в непосредственное управление виртуальной машине. В том числе видеокарту.
Воображение рисует такую конфигурацию: настольный сервер с гипервизором, на нем запускается гостевая пользовательская операционная система, имеющая доступ к необходимым устройствам ввода-вывода, один-два неприхотливых сервера по мере надобности, ну и сколько надо виртуалок для бесчеловечных экспериментов. Управляем гипервизором через консоль в гостевой ОС либо удаленно, с ноутбука, скажем.
Вдохновленный этой картиной, я решил попробовать, но оказалось, что проброс (passthrough) видеоадаптера — задача не совсем тривиальная. Только месяца через три боданий с железом и чтения форумов удалось получить положительный результат. В качестве гипервизора пробовал VMware и Xen. Получилось только с Xen.
Читать дальше →
Всего голосов 65: ↑62 и ↓3+59
Комментарии71

Сделаем TCP быстрее

Время на прочтение2 мин
Количество просмотров24K
Компания Google опубликовала ряд рекомендаций, как уменьшить задержку (latency) для TCP-соединений между веб-сервером и браузером. В этих рекомендациях обобщаются исследования, которые компания вела в течение нескольких лет.

1. Увеличьте первоначальный размер congestion window до 10 (IW10). Сейчас в начале TCP-соединения отправляется три пакета данных в три раунда (RTT) для передачи небольшой информации (15 КБ). Наши эксперименты показывают, что IW10 уменьшает сетевую задержку для веб-соединений более чем на 10%.

2. Уменьшите первоначальный таймаут с 3 секунд до 1 секунды. RTT в 3 секунды был приемлем пару десятилетий назад, но в современном интернете нужен гораздо меньший таймаут. Наше обоснование для этого хорошо задокументировано здесь.
Читать дальше →
Всего голосов 107: ↑97 и ↓10+87
Комментарии32

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров565K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

Грамотная настройка сервера отправки почты для скриптов PHP, настройка функции mail()

Время на прочтение8 мин
Количество просмотров274K
В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.

Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.
Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

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

Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.
К слову данную инструкцию я использую для своих проектов. Системы автоматизированного получения приглашений и получения виз в страны Шенгена: https://goingrus.com/ru, весь софт крутится на виртуальной машине.

Подробности под катом
Читать дальше →
Всего голосов 97: ↑71 и ↓26+45
Комментарии73

Универсальное чтение ячеек в PHPExcel

Время на прочтение4 мин
Количество просмотров103K
Привет, Хабр!
Мне по работе часто приходится импортировать Excel-документы средствами PHP.
Для этого я использую библиотеку PHPExcel, которая на сегодняшний день является весьма удобным инструментом.
Но есть несколько «скользких» моментов, связанных с чтением данных из ячеек, о которых я хочу рассказать хабрачитателям, а также разобрать функцию, решающую эти проблемы.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии29

Debian: Apt-Pinning на примере php5-fpm и nginx 1.0.4 (Debian way)

Время на прочтение3 мин
Количество просмотров6K
Всем Debian'щикам известно, что Debian настолько же стабилен, насколько тормознут на «новинки». В частности, пакета php5-fpm, так многими любимого, в стабильном репозитории до сих пор нет. Решив чуток поискать, как делают люди, понял, что многие собирают его из «сорцов». Мне это как-то стало не по душе. Поэтому сегодня я поставил его в стиле Debian-way, с помощью Apt-Pinning.

Apt-Pinning, вкратце, это технология, которая показывает, из какого репозитория предпочтительнее ставить пакет.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии18

Скриншоты сайтов своими руками

Время на прочтение2 мин
Количество просмотров13K
Проблема создания скриншотов web-страниц прямо на сервере встает достаточно редко, но, как говорится, метко. Хватишься иной раз, так гугль дает ссылки на какой-нибудь парсер уже существующего сервиса. Но, господа, это же не наш метод!

Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...

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

Читать дальше →
Всего голосов 106: ↑95 и ↓11+84
Комментарии34

Слепая подпись на основе ГОСТ 34.10-2001

Время на прочтение5 мин
Количество просмотров22K
Прошедшим и будущим выборам посвящается.

После вбросов, скандалов, интриг, расследований, которые были на думских выборах, невольно задаешься вопросом: а как сделать так, чтобы было все честно? Ну а применительно к ИТ, как сделать так, чтобы все было честно, да еще и с помощью высоких технологий? Я читал и про пробивание дырочек, и про QR-коды, поэтому решил внести скромную математическую лепту.
В этом топике мы поговорим с вами о том, как решить две взаимно противоположные проблемы с помощью криптографии: проблему верификации избирателя и проблему тайны голосования. Я немного расскажу о так называемой «слепой подписи» и даже представлю демонстрационное приложение, которое показывает, каким образом могут быть решены задачи верификации и анонимности одновременно, причем на основе криптоалгоритмов ГОСТ 34.10 и 34.11, которые официально одобрены ФСБ.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии46

Бойкот железу без поддержки в Linux

Время на прочтение2 мин
Количество просмотров2K
К счастью, мощность и производительность компьютерного железа уже достигла высот, позволяющих комфортно работать на любом компьютере «из супермаркета». Выпуск нового процессора с еще более заоблачной частотой или жесткого диска безграничных объемов уже не радует сердце так, как раньше. Мегапиксели фотоаппаратов перешагнули 10-ку и теперь, кажется, растут только чтобы было хоть чем-то забить жесткие диски. В то же время, увеличился и спектр брендов, моделей и архитектур. Теперь выбор того или иного товара, зачастую, продиктован не техническими характеристиками, а, во многом, его доступностью и вашей лояльностью к бренду.

Многие ругают Linux за отсутствие поддержи определенного железа — это действительно правда. Но суть проблемы в том, что за долгие годы безраздельного властвования MS Windows Производитель привык к тому, что ему достаточно написать драйвер только для MS Windows. Теперь же, когда ситуация изменилась, Потребитель должен рублем отучить Производителя от этой порочной практики.

Это означает, что покупая новое железо, почитайте форумы, официальные сайты, сообщества и убедитесь, что это железо поддерживает Linux (именно в такой последовательности). Покупая железо без поддержки Linux, вы не только получаете неработающее железо, с которым придется долго «мучиться в консоли» с неопределенным результатом, но и тормозите здоровую конкуренцию, эволюцию или прогресс.

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

Update: По совету mvgolubev добавляю ссылки на каталоги оборудования, которое поддерживает Linux:
комплексная база по различным устройствам
www.linuxcompatible.org
www.linux-drivers.org

ноутбуки и другие мобильные устройства
www.linux-on-laptops.com
www.tuxmobil.org

сканеры
www.sane-project.org/sane-mfgs.html

аудиокарты
http://www.alsa-project.org/main/index.php/Matrix:Main

видеокарты
xorg.freedesktop.org/wiki/Projects/Drivers

Wi-Fi адаптеры
linux-wless.passys.nl
www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html

принтеры
www.openprinting.org/printer_list.cgi

цифровые фотокамеры
www.gphoto.org/proj/libgphoto2/support.php
http://www.teaser.fr/~hfiguiere/linux/digicam.html
Всего голосов 250: ↑167 и ↓83+84
Комментарии274

Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?

Время на прочтение12 мин
Количество просмотров70K
Computer Scientist, Software Engineer и Coder заходят в бар.
— О, а вот и программисты! — окликает их бармен...


Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют "программистами". А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.

Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.

Давайте же попробуем разобраться.
Читать дальше →
Всего голосов 148: ↑132 и ↓16+116
Комментарии129

Уязвимости серверов к медленному чтению

Время на прочтение2 мин
Количество просмотров28K
Приветствую.
Хочу рассказать, чем я баловался в свободное от работы в Qualys время. Так как в англоязычном интернете на удивление много шума про Slow Read DoS attack, и уверен что получу здесь много полезной критики и дельных предложений.

В августе 2011 года написал програмку slowhttptest, которая тестирует веб-серверы на наличие уязвимостей, связанных с обработкой медленных HTTP запросов, таких как slowloris и slow HTTP Post. Цель — создать конфигурируемый инструмент, облегчающий работу разработчиков и позволить им концентрироваться на создании эффективных защит, а не ковырянии в питоне, на котором написаны большинство proof-of-concept эксплоитов.

А потом решил попробовать, как реагируют серверы на медленное чтение клиентами HTTP респонсов. На удивление плохо реагируют. Дефолтные apache, nginx, lightpd, IIS отказывают в обслуживании на ура.

А суть такова:
Читать дальше →
Всего голосов 119: ↑113 и ↓6+107
Комментарии74

Как правильно исключить действие подразумеваемых гарантий в контракте на разработку ПО (Часть 3)

Время на прочтение3 мин
Количество просмотров2K
Если кто помнит, в первой части своей статьи о гарантиях я упоминал о «подразумеваемых гарантиях» (Implied Warranties), которые автоматически являются частью контрактов на разработку ПО, т.к. они закреплены законодательно. В британском законодательстве эти гарантии закреплены в The Sale of Goods Act 1979 и The Supply of Goods and Services Act 1982. Напомню, что к «Implied Warranties» относятся: 1) Warranty of Title, 2) Infringement Warranty, 3) Warranty of Merchantability, 4) Warranty of fitness for а specific Purpose.Мы говорили о том, что если прямо не исключить действие этих гарантий, то они будут распространяться на правоотношения в рамках этого контракта. Теперь я предлагаю рассмотреть варианты исключения действия этих подразумеваемых гарантий.

В первую очередь стоит отметить, что если мы говорим о праве Великобритании, то все исключения «warranties» должны соответствовать требованиям, которые предъявляет UTCA (Unfair Contract Terms Act 1977). В соответствии с UTCA, некоторые «implied warranties» вообще не могут быть исключены (например, «Warranty of Title»), а некоторые, могут быть исключены только целесообразно — «only if reasonable» (например, «Warranty of fitness for а specific Purpose»). Если суд придет к выводу о том, что условие об исключении гарантии идет в разрез с требованиями этого нормативного акта, то это условие будет считаться недействительным. Во избежание рисков, связанных с нарушением UTCA, и в целях обеспечения исключения максимального числа гарантийных обязательств, разработчик может воспользоваться следующей конструкцией: «Other warranties are excluded to the maximum extent permitted by law».
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии2

Продление жизни аккумуляторам электроинструмента

Время на прочтение3 мин
Количество просмотров90K
image
Я думаю все любители DIY имеющие аккумуляторный инструмент знают, что аккумуляторы штука недолговечная.
А купить замену бывает не так просто. И дело зачастую не в цене (хотя и цена аккумуляторы для профессионального инструмента может быть совсем не детской), а в том, что нереально найти нужную модель.
Я сам столкнулся с этой проблемой после двух лет эксплуатации профессионального шуруповерта с 18V аккумуляторами на 1,5А*ч.
Несмотря на то, что я предусмотрительно докупил 2 дополнительных батареи в комплект к двум шедшим в комплекте в последнее время все 4 стали работать неприлично мало и вопрос встал ребром. Дело осложнялось тем, что итальянский производитель, увы, разорился пару лет назад. Торговая марка была продана китайцам, а сама линейка профессионального инструмента снята с производства. Так что простое решение «выкинуть и купить новые» не проходило.
Осторожно — много фото.
Пришлось браться за отвертку и включать голову
Всего голосов 86: ↑83 и ↓3+80
Комментарии63

Сети для самых маленьких. Часть нулевая. Планирование

Время на прочтение7 мин
Количество просмотров2.1M
Это первая статья из серии «Сети для самых маленьких». Мы с товарищем thegluck долго думали с чего начать: маршрутизация, VLAN'ы, настройка оборудования.
В итоге решили начать с вещи фундаментальной и, можно сказать, самой важной: планирование. Поскольку цикл рассчитан на совсем новичков, то и пройдём весь путь от начала до конца.

Предполагается, что вы, как минимум читали о эталонной модели OSI (то же на англ.), о стеке протоколов TCP/IP (англ.), знаете о типах существующих VLAN’ов (эту статью я настоятельно рекомендую к прочтению), о наиболее популярном сейчас port-based VLAN и о IP адресах (более подробно). Мы понимаем, что для новичков «OSI» и «TCP/IP» — это страшные слова. Но не переживайте, не для того, чтобы запугать вас, мы их используем. Это то, с чем вам придётся встречаться каждый день, поэтому в течение этого цикла мы постараемся раскрыть их смысл и отношение к реальности.

Схема сети

Начнём с постановки задачи. Есть некая фирма, занимающаяся, допустим, производством лифтов, идущих только вверх, и потому называется ООО «Лифт ми ап». Расположены они в старом здании на Арбате, и сгнившие провода, воткнутые в пожжёные и прожжёные коммутаторы времён 10Base-T не ожидают подключения новых серверов по гигабитным карточкам. Итак у них катастрофическая потребность в сетевой инфраструктуре и денег куры не клюют, что даёт вам возможность безграничного выбора. Это чудесный сон любого инженера. А вы вчера выдержали собеседование и в сложной борьбе по праву получили должность сетевого администратора. И теперь вы в ней первый и единственный в своём роде. Поздравляем! Что дальше?
Читать дальше →
Всего голосов 104: ↑100 и ↓4+96
Комментарии134

Основы и заблуждения насчет JavaScript

Время на прочтение9 мин
Количество просмотров55K

Объекты, классы, конструкторы

ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.
В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).

Прототипное делегирующее наследование


Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному.

Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
Читать дальше →
Всего голосов 174: ↑161 и ↓13+148
Комментарии96

Разбираемся с prototype, __proto__, constructor и их цепочками в картинках

Время на прочтение2 мин
Количество просмотров34K
Есть javascript код:
  1. var A = function () {};
  2. A.prototype.b = 100;
  3. var a = new A();
  4. A.prototype.c = 101;
  5. a.c = -100;
  6. A.prototype = {};
  7. A.prototype.b = 536;
  8. /* 1 */ console.log(a.__proto__.constructor.prototype.b === 536);
  9. var b = new A();
  10. /* 2 */ console.log(a.__proto__.__proto__.constructor === a.__proto__.constructor.prototype.constructor);
  11. /* 3 */ console.log(b instanceof A);
  12. /* 4 */ console.log(!(a instanceof Object));
Вопрос. Что возвратят выражения 1-4 и почему?

Затрудняетесь ответить?
Тогда вам стоит пройти под кат ;-) (Далее 600 Кб больших изображений)
Читать дальше
Всего голосов 75: ↑58 и ↓17+41
Комментарии51

Работа с памятью (и всё же она есть)

Время на прочтение13 мин
Количество просмотров107K
Существует распространенное мнение, что «рядовому» PHP разработчику практически не нужно заботиться об управлении памятью, однако «заботиться» и «знать» всё же немного разные понятия. Попытаюсь осветить некоторые аспекты управлению памятью при работе с переменными и массивами, а также интересные «подводные камни» внутренней оптимизации PHP. Как вы сможете убедиться, оптимизация это хорошо, но если не знать как именно она «оптимизирует», то можно столкнуться с «неочевидными граблями», которые могут вас заставить изрядно понервничать.

Читать дальше →
Всего голосов 235: ↑224 и ↓11+213
Комментарии90

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность