Учим создавать движки для сайтов знакомств

Кажется, только Влад Красовский способен на это. Я уже 3 месяца, как рассталась с парнем.


Поначалу мотивация была проста — давайте выложим, ведь MySQL выложил, и мы выложим, вдруг что-то получится. Хотя из вышеописанного складывается ощущение, что многие ожидали от iPhone 5 большего, на деле у Apple все идет прекрасно. Называется сия функция - родительский контроль! Ну, я и купил Напишите в титрах, что вы режиссер. Человек обращается к индусам, чтоб работало долго и надёжно, а не из желания сэкономить. Both drivetrains share the same 3.

Клуб изучающих PHP #54

Татарлав сайт знакомств зухра уфа Ответить Мими on 28 сентября 25 в 9:32Библию прочтите и узнаете, почему женщина при посещении церкви должна повязывать голову платком.
Учим создавать движки для сайтов знакомств Замуж выходила за меня девочкой, к моей, конечно же, большой гордости. Первый очень долго не мог натрахаться, сначала ебал ее на спине, потом перевернул раком. Я на боку, сзади от меня Макс - мой парень, а передо мной Дима - друг.
Секс знакомства приморский край Мое чувственное жаждущее ласки тело стонет от желания и страсти. Мое лоно, источая соки живительной влаги, зовет вас, чтобы познать то, что мы часто познаем только в наших сладких фантазиях..
Пандавилл ком сайт знакомств А что если идет несколько знаков препинания подряд? Скриншот ошибки это хорошо но хотелось бы знать как повторить проблему. Людей мы постоянно ищем.

Why do I have to complete a CAPTCHA?

Очевидно пока данные в буфере, и не переданы Апачу, мы все еще можем слать заголовки. Это делается для оптимизации при выводе данных маленькими кусками а любой шаблон это и есть вывод данных маленькими кусками , так как послать блок размером байт быстрее чем послать блоков по 1 байту. Буферизацию ты можешь включать и сам, для каких-то своих целей. Буферизация управляется такими настройками: Разумеется в коде ты не должен полагаться на буферизацию и должен слать заголовки строго до вывода любых данных.

Там выше вот что было: Собственно, выше одно задание кук, которые вытолкнули мои предыдущие команды. Браузер с его помощью запрашивает и получает страницы и файлы с сервера. И как ты видишь, команда cookie всего лишь отправляет заголовок set-Cookie который потом читает и разбирает браузер. Наверное, надо больше времени уделять изучению конфигурации PHP.

Очень досаждает подобные неочевидные вещи. А на линуксе даже не знал, что по-дефолту php ставится с 4кб буффера. Только что проверил, у меня тоже 4кб. Я как поставил апт-гетом, так ничего и не менял в конфиге. Я о такой штуке как BOM. Сохраняя документ в юникоде, твой редактор добавляет в его начало несколько символов, так называемый byte order mark https: То есть этот необязательный символ удаляется.

Всегда сохраняй в utf8 без bom. Если увидишь ошибку "cookie already sent", есть смысл проверить, правильно ли сохранен документ. В этих кодировках каждый символ состоит из 2 байт, но порядок разный да, выбрать единственный порядок разработчики не смогли. В utf-8 такой проблемы нет и BOM не требуется. Но тот же блокнот его вставляет.

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

Поисковые системы такого использования за бесплатно не любят и блокируют подобные запросы. Советую тебе в это не лезть. Ясно, я лезть не буду, хочется знать технологию, как это делать. Вернее как определить есть совпадение того или иного куска текста в индексе или нет. Просто скопировать текст полученного ответа, то есть всей страницы с выдачей и искать в ней текущие куски текста?

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

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

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

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

Выполняю задачу про студентов, нарисовался такой вопрос: Какой вообще профит использовать ООП для этой задачи? Вот сравни 2 функции: Во второй сразу мы знаем какие есть поля и методы у Student. В первой мы ничего не знаем, кроме того что это какой-то массив с какими-то полями, а чтобы понять с какими именно, надо изучать все места где вызывается функция.

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

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

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

Но сейчас понял, что можно просто в конструкторе сделать так, чтобы значения брались из инпутов, наверное, сейчас так и сделаю. Ещё вопрос по поводу ООП, на сколько сильная должна быть абстракция? Где стоит применять ООП, а где можно и обойтись без этого?

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

Если ты хочешь, ты можешь добавить в студента метод вроде setAttributes, принимающий массив, но не забудь сделать в нем список допустимых для изменения полей. Нужен класс Студент, класс для работы с таблицей студентов у меня был урок про DataMapper , ну и наверно класс для валидации студента хотя это можно поместить и в класс работы с БД.

Да, про MVC совсем забыл. Php отличается от цмс типа джумла или вордпресс и т. Или рhp это не цмс. Каковы преимущества одного над другим? Знаний программирования и применение пхп кода там никахуя, зато пафоса и ебли со стрелочками фтп клиентами, прикручиванием говна - дохуя. Посоветуйте php скрипт, который в админке позволяет создавать новые поля для ввода. А то я ТЗ невнимательно прочитал, думал нужно самому просто поля прикрутить к простой форме.

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

Может есть какой-то подвох? Подозреваю, что те сайты на cms, и там это удобство тупо не предусмотрели, а не отказались из-за каких-то заумных соображений Можно ли и стоит ли писать "кросс-серверный код", чтобы можно было затем перенести с апача на nginx? Подскажите, куда копать в плане работы с архиваторами в php.

Вернее, подскажи, все равно тут кроме опа никто почти по делу не отвечает. Чем однобитовая кодировка отличаеться от двух битной. Юзай Multibyte String functions Хотя и проблема в твоем коде в другом если коротко то это пиздец , но для подобных задачь нужно знать что обозначают перечисленные мной выше вещи.

А в массиве пары "ключ-значение" в функции strtr определяют "что заменить" ключ "на что заменить" значение. Объясните доступным языком, что такое трейты и где применяются. Если да, то почему эти поехавшие так не написали, а зашифровали это простое определение в непонятное? Так короче я понял, как можно сделать, чтобы в админке юзер создавал новые поля ввода и они выводились на страницу.

Или тут нужно таблицу с внешними ключами делать?? Понятно что все советуют то-чему они сами обучены, но может кто-то даст более адекватный ответ с чего начать?

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

В веб-разработке, то есть в ремесле создания сайтов, естественно ты должен знать html, css и js на худой конец jquery. Кроме того, нужно знать язык запросов к базам данных, это sql. Что касается серверных технологий, то самым популярным на постсоветском пространстве языком по статистике является php. Он не лучше, не хуже других языков, у каждого языка свои преимущества и недостатки.

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

Это совершенно разные языки. Да, джаваскрипт знать нужно. С чего начать, выбирай сам. О других языках я не в курсе. Cms типа wordpress, drupal, bitrix, joomla, opencart и т. Много зарабатывать, работая программистом ты сможешь только если любишь это дело. Потому что знания нужны колоссальные.

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

ОП, хуевый у тебя мануал, который якобы для чайников, без обид. Даешь теорию, говоришь решать задачи, а пример решенных задач не даешь. Как я ее решать-то должен? Я не скрываю, что я имбецил, но я видел в интернетах более разжеванные гайды по изучению, правда они немного скучнее, чем твои. Ну нихуя себе я еще и цмску должен на коленке написать, чтобы поля добавлялись, удалялись и редактировались, а писали, что парочку простых функций!

И все это всего за 5 дней. Гайз, подскажите в чём трабла, не записываются данные в SQL. Тебе же написано, что в синтаксисе ошибка. Вангую, что это из-за доллара перед названием таблицы students. Я вижу, что ошибка в синтаксисе поэтому и спрашиваю, ибо делаю по мануалу. Тут много людей которые уже решили эти задачи и они тебе наверняка подскажут.

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

Даунам будет лень постоянно держать под рукой паки. Ну и соответственно при загрузке файла проверяешь хеш загружаемого файла и ищешь файлы с таким хешем в базе. Думал хеш-сумма это какая-то неведомая штука, а оказывается обычный md5. Тупой вопрос получился, но уж извините. По архиваторам додумался зайти на php. Так что снимаю вопрос. Создание архива требует времени.

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

Также нужен крон-скрипт или что-то аналогичное для удаления старых архивов. Однако функция strtr с юникодом работает, она поддерживает юникод. Если кто-то всё таки скажет в чём была трабла, будет круто - надо разобраться, но конкретной необходимости нет, я переделал запрос к базе через mysqli.

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

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

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

Чтобы тем самым показать насколько глубоко я заблуждаюсь. Пиздец, где мои 17 лет и нормальные мозги Попробуй переписать код внутри цикла примерно так: Раз так тупо с понимание этого, то пример напишу чуть позже. С чего ты взял, что их содержимое должно поменяться? И всё таки анончики, из головы у меня не может выйти скрипт проверки уникальности текста.

Вот написал такой код: Уже дальше можно занести результат в базу данных и сохранить на некоторое время по какому-то сгенерированому адресу на определённое время.

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

Ещё я читал что у гугла есть API и всё это можно сделать ещё легче, поясните пожалуйста в подробностях если не сложно по поводу всего этого. В результате в начале второй и третьей строки получается лишний пробел. Сакральный вопрос посоны, ПХП начал учить месяцев назад, вроде бы ознакомился и кажется достиг того уровня когда можно пробоваться на вакансию пхп джуниора.

Но есть один нюанс, мне 24 года, через 3 месяца будет 25 лет. По образованию я вообще не программист, сейчас работа есть неофициальная , но хотелось бы попробовать устроиться программистом в ближайшие месяца, не поздно ли это делать в лет?

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

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

Следовательно, надо сначала вывести все первые буквы из каждой строки, затем перейти на вторую строку и вывести вторые буквы из каждой строки, и тд. Хватит и одной наверно, или если работ нет, можно предложить сделать тестовое задание. Также желательно писать какой именно символ неправильный.

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

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

Если на вход давать валидные utf-8 строки то на выходе тоже получим вылидную строку. Это значит что она корректно обрабатывает строки в этой кодировке. А что если идет несколько знаков препинания подряд? Лучше обойтись без этого. Непонятно что за манипуляции с индексами, непонятно почему строка для сравнения выглядит как точка с запятой и пробел после нее.

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

Это не праивльно, ты должен понимать что ты пишешь а не ставить наугад разные значки. Доллар обозначает что в строку в это место вставится значение переменной. Чему она у тебя равна? И какая ошибка была без доллара?

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

Мне кажется это скорее вредная штука так как я не могу вспомнить примеров где они бы были правильным решением. Если у классов много общего, их наверно стоит наследовать и трейты не нужны. Если в классы надо добавить общий функционал, наверно лучше сделать его отдельным объектом и внедрять через конструктор. Лучше уметь правильно пользоваться обычными возможностями ООП.

Ты же сам фигню пишешь, какая еще двухбитная кодировка? Это в которой всего 4 символа что ли? Низкий уровень знания потому что, люди не хотят учиться в нашем треде а хотят учиться по мутным видеокурсам где про это не рассказывают. Конечно, имя должно быть нормальное чтобы пользователь потом не рылся среди кучи непонятных файлов. Есть расширения, но их установка под windows може тсодержать подвохи в виде поиска нужных dll.

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

Текст на главной сделан так: Там же есть API и хуки для плагинов. Ну тип в доктрине определяет как данные преобразуются при записи или загрузке из БД. Соответственно твой класс, реализующий этот тип, должен преобразовывать данные между объектом класса MediaInfo и строкой в формате JSON.

То есть пара строчек на каждый случай. Потому что ты не тестировал во всех бразерах, а те что у тебя интерпретируют заголовки как utf-8 хотя не обязаны. В новых браузерах ты также можешь закодировать имя в специальном формате: Напомню не забыть проверить https: Хочу всем напомнить что наш тред посвящен программированию, а нытьем лучше заниматься в других разделах.

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

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

Потому мы используем их только в контроллерах, которые все равно повторно исплоьзовать нельзя. В фреймворках контейнеры реализуются по-разному.

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

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

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

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

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

У тебя мог остаться запущенный сервис например. Хотя гит и сегодня предупреждает про отстутсвующую пустую строку в конце файла. Не использовать их считается плохой практикой так как легче ошиьиться и неочевидно какие значения есть вообще. Но можно и как у тебя. Что еще за поле password?

Пока у тебя тут SQL инъекция с помощью которой можно легко взломать сайт. Твое нынешнее решение конечно предотвращает XSS: Попробуй переделать этот if, например засунув в него только отдельные атрибуты и теги. Папку vendor надо добавить в гитигнор и убрать из репозитория. Ну и я немного побуду граммар наци: Знаете, господа, вот я сколько в вебе ковыряюсь, у меня назрела идея написать толстый общий подробный мануал, который все расписывает по пунктикам, потому что вот это вот ковырять в гугле - там урвал кусок, там кусок, потом при решении практической задачи, когда ты думал, что уже все знаешь, ты внезапно открываешь для себя грани непознанного и понимаешь дна нет , что тебе еще пару месяц надо это ковырять.

ЦМСки для того и созданы, чтобы хоть как-то облегчить задачу вникания в чужой код. Ну и расширять их легче, чем самописный велосипед с костылями. Веб-сокеты и просто сокеты разные вещи, я имел в виду именно обычные сокеты, то есть TCp-соединения и UDP-пакеты.

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

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

Ну и я не советую использовать курл напрямую, я советую в приложениях исопльзовать библиотеку HTTP клиента с удобным синтаксисом, напрмер Guzzle или Buzz, так как код на сыром курле смотрится плохо и плохо читается, часто также он содержит ошибки или отстутствие проверок результата. Конечно это не относится к учебному коду. Скриншот ошибки это хорошо но хотелось бы знать как повторить проблему.

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

Плюс, если введено несколько слов то работать не будет номально. В общем у меня ощущение что тебе рановато писать соцсети и стоит начать с изучения SQL. Да любая тема, только бы там объясняли про js в любом его проявлении. То есть как это, а так - человек что-то делает, описываю это в статье или снимая видео, попутно немного разъясняя, а я повторяю при этом пытаюсь понять как это всё работает, таким боком изучаю.

Как вам вообще такой стиль изучения? Зато как видишь я теперь в этих технологиях разбираюсь. Так что читай, экспериментируй, это полезно. Это внутренний кеш курла в памяти и он сработает только например когда ресурс делает редирект на том же домене, курл может не отправлять повторно DNS запрос а взять ответ из кеша. Браузеры тоже кешируют DNS так как на каждой странице куча картинок и для каждой делать новый DNS запрос быдо бы медленнее.

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

Да и погода сейчас такая что днем на улицу вылезать неохота, жарко же. Алсо, погугли текст ошибки из первого скрина. Алсо погугли debian install postrgresql может ему репозитори какой надо подключить? На втором скрине опечатка в названии Ну и локаль ты как-то криво настроил. Это делается до запуска скрипта и в дальнейшем массив не меняется.

Я не понимаю зачем для одного действия нам 2 файла: Вообще, не стоит сокращать названия. Если что-то из него можно вынести в функции, стоит это сделать. Зачем оно в savePhoto? Если везде то можно оставить.

Константы перенеси-ка в functions. Тогда зачем 2 переменных? Нельзя просто эти ифы перенести в шаблон? Лучше наверно при передаче неправильного имени поля потихому его исправлять на поле по умолчанию и тогда эта проверка станет не нужна.

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

Я не решаю, а составляю задачки, пишу уроки и проверяю решения. Мне не охота за тебя читать документацию к твоей CMS. У меня своей работы достаточно. Надо писать хороший и поддерживаемый код чтобы про тебя потом так же не говорили. Как насчет посмотреть на несложный контейнер из фреймворка Slim?

Имей в виду что это решения для микрофреймворков. Код должен учить хорошим практикам и объяснять каждую опцию. Также нет проверки результата. Это лучше сделать не функцией с аргументов а классом. Есть ограничение глубины ссылок, ограничение по путям и доменам?

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

Перепсывание кода с экрана ничего не дает. Ты ничему так не науичшься и свалишься на первом же вопросе на соеседовании. Порекомендуйте книгу про jQuery или напишите что сами читали. Только на русском, а то я дибил. По сути нужно пройтись по популярным методам, а справочник ломает читать. Аноны, хороший пост про URL, все кто изучает веб-приложения, прочтите и поймите: Ну я не так понял, значит.

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

Очевидно что if не сработает, не? Однако во время создания Zend Engine версии 0. Это обозначение не менялось ни разу в течение всего времени разработки PHP [30]. PHP-скрипты обычно обрабатываются интерпретатором в порядке [1] , обеспечивающем кроссплатформенность разработанного приложения:.

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

Ядро PHP реализует средства для автоматического управления памятью; вся выделенная память возвращается системе после завершения работы скрипта [31]. Расширения позволяют дополнить базовые возможности языка, предоставляя возможности для работы с базами данных , сокетами , динамической графикой , криптографическими библиотеками, документами формата PDF и тому подобным.

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

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

PHP имеет несколько пасхальных яиц шуток. Передача специальных GET-параметров любому php-скрипту приводит к выводу различных изображений. Также имеется специальное значение для отображения списка всех авторов PHP 4,5 [35]:. В силу популярности языка PHP и желания увеличить быстродействие основанных на нём веб-приложений , создано несколько альтернативных компиляторов , близких к PHP языку.

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

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

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

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

Другая причина отсутствия ортогональности в PHP заключается в особенностях появления этого языка на свет. В отличие от подавляющего большинства остальных языков программирования, PHP не был изначально задуман как полноценный язык программирования, а постепенно вырос из шаблонизатора для Perl.

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

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

При этом принято выпускать переходные версии, в которых постепенно вводятся новые конструкции, а использование устаревших вызывает вывод предупреждений. К таким переходным версиям относится и PHP 5. Поддержка строк с многобайтовыми кодировками , такими как UTF-8 реализуется через отдельные расширения mbstring и iconv , на уровне ядра поддержка отсутствует, однако с версии PHP 4.

Поддержка многобайтовых кодировок во всех строковых функциях стала доступна с версии 5. В языке не предусмотрена возможность создания многопоточных приложений и отсутствует поддержка синхронизированного доступа к ресурсам, однако реализуема при помощи расширения PCNTL [48].

Согласно исследованиям одного из крупных российских порталов трудоустройства [49]:. Материал из Википедии — свободной энциклопедии. У этого термина существуют и другие значения, см.

Список примеров в этой статье или её разделе не основывается на авторитетных источниках непосредственно о предмете статьи или её раздела. Добавьте ссылки на источники , предметом рассмотрения которых является тема настоящей статьи или раздела в целом, содержащие данные элементы списка как примеры. В противном случае раздел может быть удалён.

В этом разделе не хватает ссылок на источники информации. Информация должна быть проверяема , иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 21 ноября года. Воронеж, Краснодар, Новосибирск, Сиэтл, Бойсе. Еще Питер и, кажется, Саранск.

Я, по-моему, кого- то забыл Сейчас у нас четыре с половиной разработ- чика и два сейлза оба в США. Почему четыре с половиной? Есть четыре матерых и сильных разработчика и один, скажем так, стажер — но лично мне-то приходится заниматься совсем не только разработкой.

Так что людей-то выхо- дит пять, потому что со мной, но разработчиков четыре с половиной получается, потому что регулярно без меня. Общаемся электронно — e-mail, Skype и IRC на ежедневной основе. Понятно, что если кого-то где-то нет, а он срочно ну- жен — сотовый телефон никто не отменял, и мы будем дозваниваться и искать. Но такое требуется редко. Людей мы постоянно ищем. С этим, как и везде в IT, вообще настоящая беда.

Open Source в этом никак не помогает, скорее даже вредит. У меня есть теория, что люди думают: И пу- гаются даже резюме прислать. На самом деле у нас все куда более приятно и демократично, не говоря уж об интерна- ционале, — думаю, Адам, Адриан, Алексей, Антон, Глория, Евгений, Илья, Ричард и Станислав подтвердят. Неудивительно, что каждый сисадмин первым делом пытается организовать оборону своими силами — тем более что пока еще это возможно.

Приведенные рецепты не помогут вам справиться с любой атакой, но от большинства опас- ностей они вас уберегут. Все наши дальнейшие советы по защите от DDoS своими силами основы- ваются на следующих важных условиях. Причина неудачи кроется в виндовом сетевом стеке: Мы не знаем, почему Windows Server в таких ситуациях работает настолько отвратно, но сталкивались с этим не раз и не два.

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

Если у вас, не ровен час, стоит Apache, то как минимум поставьте перед ним кеширующий прокси — nginx или lighttpd. Для борьбы с различными видами Slowloris пользователи Apache придумали сначала патч Anti- slowloris.

Но если вы хотите спокойно спать по ночам, проще взять HTTP-сервер, неуязвимый для Slowloris на уровне архитектуры кода. Поэтому все наши дальнейшие рецепты основываются на пред- положении, что на фронтенде используется nginx. Традиционная техника самообороны — почитать лог-файл HTTP-сервера, написать паттерн для grep отлав- ливающий запросы ботов и забанить всех, кто под него подпадет.

Ботнеты бывают двух типов, оба опасны, но по-разному. Один целиком приходит на сайт моменталь- но, другой — постепенно. Первый убивает все и сразу, зато в логах появляется весь полностью, и если вы их проgrepаете и забаните все IP-адреса, то вы — победитель.

Второй ботнет укладывает сайт нежно и осторожно, но банить вам его придется, возможно, на протяжении суток. Любому администратору важно понимать: Ниже следуют советы о том, куда можно заранее подложить со- ломки, чтобы не так больно было падать. Если на ваш сайт приходит DDoS, то максимально действенным способом дать отпор может стать модуль testcookie-nginx https: Иногда попадаются более продвинутые — такие могут использовать cookies и обрабатывать редиректы, но почти никогда DoS-бот не несет в себе полноценного JavaScript-движка хотя это встречается все чаще и чаще.

Testcookie-nginx работает как быстрый фильтр между ботами и бэкендом во время L7 DDoS-атаки, позволяющий отсеивать мусорные запросы. Что входит в эти проверки? Умеет ли клиент выполнять HTTP Redirect, поддерживает ли JavaScript, тот ли он браузер, за который себя выдает поскольку JavaScript везде разный и если клиент говорит, что он, скажем, Firefox, то мы можем это проверить.

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

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

Примечательно, что начать использовать testcookie-nginx крайне просто. Разработчик, в частности, приводит несколько понятных примеров использования на разные случаи атаки с семплами конфигов для nginx. Помимо достоинств, у testcookie есть и недостатки: Но от ряда вещей, таких как, например, примитивные инструментарии на Java и C , он помогает.

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

Nginx поддерживает нестандартный код , который позволяет про- сто закрыть соединение и ничего не отдавать в ответ: Здесь поможет встроенная в движок базы данных SQL-директива explain. Если сайт лежит навзничь и вы ничего не теряете, отключитесь от сети, посмотрите логи, попробуйте их проиграть. Если не лежит, то походите по страницам, посмотрите на базу. Пример приведен для PHP, но идея справедлива для любой платформы.

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

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

Я приведу пару примеров. Первым багрепорт отправил именно системный администратор из России, чей ресурс был атакован этим методом, — атакующие узнали об уязвимости раньше, чем весь мир. Ему, очевидно, такая диагно- стика помогла.

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

Это не очень хоро- ший способ прямо скажем — отвратительный , поскольку данные GeoIP неточны, а ростовчане иногда летают в Египет на отдых. Но если вам терять нечего, то следуйте инструкциям: Подключите к nginx GeoIP-модуль wiki. Выведите информацию о геопривязке в access log. Если, к примеру, боты по большей части были из Китая, то это может помочь.

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

В этом случае весьма полезно иметь access. Тем более глазами в логе боты видны не всегда. Не ищите ответа на этот вопрос. Если вы считаете, что ваш сайт могут атаковать, обратитесь к компани- ям, предоставляющим защиту от атак, — у ряда анти-DDoS-сервисов первые сутки после подключения бесплатны — и не тратьте больше время на поиск симптомов. Если сайт работает медленно или не открывается вообще, значит, у него что-то не в порядке с производительностью, и — вне зависимости от того, идет ли DDoS-атака или нет, — вы, как профессионал, обязаны понять, чем это вызвано.

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

За- ставьте технических специалистов найти, в чем кроется причина паде- ния производительности сайта, а заявление смогут написать юристы. Все потому, что все запросы, которые в данный момент загружают сервер, еще не выполнились. Tcpdump поможет и здесь.

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

Как отличить DDoS-атаку, например, от эффекта рекламной кампании? Этот вопрос может показаться смешным, но эта тема не менее сложная. Бывают довольно курьезные случаи. У одних хороших ребят, когда они напряглись и основательно прикрутили кеширование, сайт слег на пару дней.

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

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

Поэтому размеры заголовков и всех используемых буферов нужно ограничить адекватны- ми значениями на клиента и на сервер целиком. Их обязательно нужно прописать в конфиге nginx. Если тело запроса больше заданного буфера, то все тело запроса или только его часть записывается во временный файл. Если размер больше заданного, то клиенту возвращается ошибка Request Entity Too Large.

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

Универсального рецепта тут нет, в каждой ситуации они свои. Но есть проверенный подход. Нужно выставить минимальные значения, при которых сайт остается в работоспособном состоянии в мирное время , то есть страницы отдаются и запросы обрабаты- ваются. Это определяется только тестированием — как с десктопов, так и с мобильных устройств. Алгоритм поиска значений каждого параметра размера буфера или тайм-аута: Выставляем математически минимальное значение параметра.

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

Например, если сайт не работает без трехминутных AJAX long polling запросов, то нужно не тайм- аут повышать, а long polling заменять на что-то другое — ботнет в 20 тысяч машин, висящий на запросах по три минуты, легко убьет среднестатистический дешевый сервер. Если вы не уверены в том, как поведет себя определенная часть вашего сайта, то в идеале вам нужно протестировать ее, понять, сколько запросов она выдержит, и прописать это в конфи- гурации nginx.

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

Есть более важные и менее важ- ные. В первую очередь надо обратить внимание на: Надо посмотреть, насколько они отли- чаются от дефолтных, и понять, насколько они адекватно выставлены.

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

Возможно, он найдет там специфические для своего сайта переменные, которые помогут не только защитить сайт от злоумышленников, но и ускорить его работу. Успешные DDoS-атаки изо дня в день гасят e-commerce, со- трясают СМИ, c одного удара отправляют в нокаут крупнейшие платежные системы.

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

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

В данной конфигурации это позволит отслеживать TCP-сессий. Непрерывно растет мощность атак сетевого и транспортного уровня. Потенциал среднестатистической атаки типа SYN- флуд достиг уже 10 миллионов пакетов в секунду. Особым спросом в последнее время пользуются атаки на DNS. Многие крупные российские компании в том числе хостинги испы- тывали в последнее время проблемы в результате атак на их DNS-серверы.

Чем дальше, тем таких атак будет больше, а их мощность будет расти. Судя по внешним признакам, большинство ботнетов управ- ляется не централизованно, а посредством пиринговой сети.

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

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

Но главное, что появилось у атакующих, — возможность рас- пространять готовое к употреблению средство для участия в атаке, ссылку на которое можно предложить всем сочувствующим перед нача- лом DDoS в социальных сетях, чатах, имид- жбордах и других каналах связи. От участни- ков потребуется минимальная настройка под себя — и можно объявлять начало.

Кратко рассмо- трим весь арсенал. Чего стоит это отфильтровать? Тут даже поведенческий анализ не нужен. Какие проблемы за- щититься от этого? Что вообще должен делать UDP-пакет на вашем www-сервере?

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

Открываем соединение и шлем данные с задержкой так долго, как только можно, чтобы занять ресурсы воркера на стороне сервера. Атака старая — ничего нового здесь нет. Почитайте, как нужно писать TCP-приложения, например здесь: Атаки в этом инструменте можно скриптовать, можно добавлять список юзер- агентов и рефереров, которые будет простав- лять пушка, чтобы сбить защищающую сторону с толку и не дать построить стратегию по паттернам.

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

Имеем четкий и уверенный тренд к движению в сторону full browser stack: На за- раженной машине запускается реальный брау- зер, который начинает делать реальные запро- сы! Но при этом про них почему-то молчат. Все говорят про LOIC. А все потому, что появился самый важный фактор — социальность.

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

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

Google тоже атаковать бессмысленно, правильно выстроились, Яндекс, наверное, мож- но, но придется приложить титанические усилия. Появилось еще такое свойство, как массовость. Вот представьте, вышли на про- тесты сто тысяч человек, а некоторым было лень, а другие были в регионах. А сколько миллионов может откликнуться на призыв Anonymous? А теперь умножьте эти миллионы на скорость аплинка DSL-модема.

Все-таки может быть опасно. Есть еще фактор X. Он состоит в том, что Anonymous — это неоднородная структура с четким разделением: Профессиона- лы организуют, вооружают и наносят основной урон, соучастники создают фоновую нагрузку и численную безопасность.

Одна проблема — советы, как правило, вредные. На самом деле — везде и рядом мы это наблюдаем. Прокси такие вещи умеют и любят делать. Поставите это правило и получите кучу ложных срабатываний так называемых False Positives. Атака отчасти достигнет своей цели, заблокировав суще- ственную долю легитимных пользователей. Клевое решение — если пушка выставляет порядок заголовков, нехарактерный для браузеров, давайте делать fingerprinting.

Тоже, в общем-то, абсолютно бес- полезная штука. Opera Mini ставит заголовки совершенно сумасшедшим образом. Полу- чите кучу False Positives. Пушка ставит нехарак- терные двойные пробелы перед заголовка- ми — давайте фильтровать по этому признаку.

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

Эльдар Заитов Eldar Zaitov написал соответствующий модуль для nginx. Тренд на повышение четко виден. Скорость распространения или нераспространения информации определяет то, как мы живем.

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

Реально ли это сделать? По сути, это несколько не связанных между собой серверов, анонсирующих вовне один и тот же префикс. Даже если удастся забить один из каналов одного из серверов, трафик за счет BGP сразу же перераспределится на оставшиеся. Даже если бы Anonymous смогли атаковать ну один- два из этих серверов, остальные бы этого не заметили благодаря тому, что весь трафик от автономной системы-источника, с которой велась бы атака, приходил бы всегда на один и тот же сервер.

Редкий ботнет способен сгенерировать та- кой объем трафика. Однако мощность атаки может быть увеличена в десятки раз за счет сетевых аномалий. И при таком раскладе по- добные цифры уже не кажутся фантастикой.

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

Главными действующими лицами на междоменном сетевом уровне являются автономные системы АС — системы IP-сетей и маршрутизаторов, управляемых одним или несколькими операторами, имеющими единую политику маршрутизации с интернетом.

АС — это прежде всего административная единица. Она должна быть зарегистри- рована в одном из региональных интернет-регистраторов, и ей должен быть присвоен номер АС в Европе интернет-регистратор — RIPE. Существует три основных типа АС: Это дистанционно-векторный протокол, то есть выбор маршрута определяется метрикой пути в данном случае это количество АС, через которые должен пройти пакет.

Для деприоритизации маршрута на междоменном сетевом уровне используется prepend policy, основанная на вставке нескольких номеров АС подряд: Это позволяет исключить теоретическую возможность возникновения статических циклов маршрутизации на уровне АС.

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

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

Однако зачастую АС столько информации не нужно, и тогда она может использовать default route, то eсть при отсутствии маршрута в таблице маршру- тизации пакет отправлять в заданную соседнюю АС.

Далее будут рассмотрены первые два класса. Начнем с наи- более частой сетевой ошибки, возникающей при настройке default route. Ошибка возникает в случае, если, с одной стороны, Александр Азимов, ведущий инженер по эксплуатации сети фильтрации трафика Qrator Сетевые аномалии: Что получается в результате? Если мы отправим пакет на любой неиспользуемый IP-адрес из этого префикса, то он попадет в цикл на стыке АС и АС-поставщика.

Пакет будет оставаться в этом цикле, пока не истечет значение TTL. Такая настройка делает сеть уязвимой к атаке на исчерпание канала. И даже если канал не будет исчерпан, АС все равно придет- ся отдуваться за увеличенный объем трафика. Наша система мониторинга обнаружила более 14 тысяч уязвимых префиксов.

Второй ошибкой в настройке маршрутизаторов являются непо- средственно усилители DDoS-атак. Один из вариантов усили- теля выглядит следующим образом: Атакующему достаточно проставить в source IP-адреса атакуемой сети для получения усиления DDoS-атаки в десять раз. Более того, в результате атакованными оказываются несколько АС: Здесь нужно сделать два замечания. Во-первых, это не теория, такой вид атаки был уже несколько раз детектирован сетью фильтрации трафика Qrator.

Во-вторых, в случае защиты от DDoS- атак на операторском уровне данный вид уязвимости позволяет проводить атаки в обход защищаемого периметра. Это связано с тем, что фильтрующее оборудование обычно стоит на стыках с АС- поставщиками, а данная сетевая уязвимость позволяет добиться эффекта, когда клиентские сети атакуют друг друга. Мы обнаружи- ли более префиксов c этой уязвимостью.

Так мы узнали, что динамические циклы марш- рутизации BGP существуют не только в теории. За последние полтора месяца нашей системой мониторинга было обнаружено более 2 тысяч циклов маршрутизации. Как возникают динамические циклы BGP? По сути, они воз- никают в трех случаях. То есть каждая из этих сетей указывает на соседнюю АС, что там трафик выгоднее.

В итоге если анонс попадет в это кольцо, то процесс распространения маршрута BGP никогда не закончится. Нач- нется гонка BGP-сообщений, при которой конкурирующие анон- сы не смогут догнать один другого, периодически выстраиваясь в полностью построенный цикл, откуда пакеты уже не могут выйти. Время жизни этого цикла обычно кратно 30 секундам.

Но главная проблема в том, что этот цикл воссоздается — после разрушения цикла снова повторяется гонка анонсов, которая заканчивается возникновением нового цикла. И так по кругу.

Удаление анонса префикса у одного из АС-поставщиков тоже может привести к возникновению циклов на стыках АС, опять же из-за default route. Рассмотренный механизм управления BGP-анонсами prepend policy также может стать причиной возникновения цикла. Данный эффект возникает из-за того, что маршрутная информация рас- пространяется не сразу и не обязательно по оптимальным путям, а согласно политике маршрутизации, отчего опять же возможно появление относительно стабильного кольца маршрутизации.

Поговорим немного о статистике. В таблице на рис. И к сожалению, это не единственная проблема этих магистральных операторов. В клиентских сетях ASX2 более 50 усилителей DDoS-атак, один из которых настолько щедр, что увеличивает плечо атаки более чем в раз.

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

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

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

Учитывайте, что сетевые аномалии зачастую не видны со стороны АС-источника. Отсюда огромное по- желание для операторов — проверяйте свою сеть. Мы изучаем вопросы сетевых аномалий для прогнозирования будущих угроз и векторов развития DDoS-атак.

У нас есть готовая система мониторинга, и мы готовы предоставлять информацию о сетевых аномалиях бесплатно. Мы не можем просто публиковать эту информацию, поскольку данные могут быть использованы злоумышленниками, но мы будем отвечать на запросы технических и административных контактов АС, зарегистрированных в RIPE.

Беда часто не приходит одна. В случае Level3 было об- наружено несколько усилителей DDoS-атак, один из которых по- зволяет увеличить плечо в 17 раз, и 25 префиксов с неправильной настройкой default route. В сети Cogent картина выглядит похожей, c той разницей, что также были зарегистрированы BGP-циклы.

Россия по сетевым аномалиям не идет впереди планеты всей. Ошибок в настройке default route у нас чуть больше, чем в среднем по миру, усилителей DDoS-атак чуть меньше. При этом среди них есть усилители, которые позволяют увеличить плечо атаки более чем в десять раз.

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

С момента запуска нашего мониторинга общее количество рис. Однако само число сетевых аномалий в каждый момент времени оказалось величиной куда более стабильной: Мы решили, что будем Робин Гудами, только для этого мы не будем грабить богатых. И попытались оповещать АС о наличии проблем. Но, к сожалению, эффективность этого мероприятия оказалась куда ниже, чем мы рассчитывали.

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

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

Тем самым если Рис. Главное в этом деле — не получить ошибку Это значит, что ты пытаешься сварить кофе в чайнике. Главное ее след- ствие — теперь проекты независимых разработчиков могут выйти из тени более дорогих тайтлов от именитых студий и издателей. И примеров историй успеха на эту тему с каждым днем становится все больше. Самое интересное, что приду- мать новый Minecraft и заработать тонны нефти можешь и лично ты!

Причем рассказывать тебе будут самые настоящие инди-разрабы! Пора разобраться в том, как его правильно готовить. На этот раз речь пойдет о сравнительно мало изученной системе контроле доступа винды. Еще один аргумент в пользу инди-тренда — это разнообразные Indie Bundles.

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

Чтобы представить примерный масштаб — в ходе продажи The Humble Indie Bundle V было продано набора общей стоимостью 5 долларов. По — тысяч долла- ров каждому из участвующих разработчиков — согласитесь, неплохо. Интересное движение началось и на сайте Kickstarter, где общими усилиями собирают средства на реализацию различных проектов. Разработчики дружно зашевелились, когда Тим Шейфер разместил там свою новую игру Double Fine Adventure в начале года.

Тим рассчитывал собрать долларов, но в итоге получил почти три с половиной милли- она. Даже новую часть Ларри про- спонсировали! Начинающим разработчикам на такой прием рассчитывать не стоит, но неболь- шую сумму денег на Kickstarter собрать можно. Создатели Kickstarter обещают снять это ограничение, но пока без такого друга ничего не получится. Это слова Даниэла Вавры — человека, в свое время создавшего игру Mafia, а ныне занимающего пост творческого директора сту- дии Warhorse.

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

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

Интерес к инди подогрел невероятный успех Маркуса Перссона с его Minecraft.

Комментарии к посту “Учим создавать движки для сайтов знакомств

Добавить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля для заполнения *