Скрупулезный xmlrpc php. Защита с помощью пользовательской функции. Блокируем XML RPC

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

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

Google Drive

  • Доступно бесплатно 15 ГБ на Диске
  • Настройка общего доступа и возможность комментирования документов
  • Интеграция с другими сервисами Google

Google Drive является идеальным выбором для владельцев устройства под управлением операционной системы Android, поскольку он туда интегрирован. Но использовать облачное хранилище Google Drive могут все владельцы учетной записи Google.

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

Цена: 15 Гб бесплатно. 100GB за $ 1,99 в месяц. 1 ТБ за 9,99 долл. США в месяц.

Облако Mail

  • Доступно бесплатно 8 ГБ
  • Настройка общего доступа
  • Редактирование файлов прямо с браузера
  • Поддержка всех популярных операционных систем

Благодаря акции от Mail, с целью популяризации облака, многие пользователи смогли взять подарок в 1 ТБ облачного пространства, чего хватит на всю жизнь. А если говорить в общем то с годами все меньше и меньше места предлагает Облако Mail своим пользователям.

Если же говорить об функционале, то здесь всё хорошо. Благодаря сервисам Microsoft появилась возможность редактировать документы прямо с Вашего браузера. А также поддержка множества платформ делает облачное хранилище данных от Mail лидером нашего списка.

Цена: 8 Гб бесплатно. 1 ТБ за 12,3 долл. США в месяц.

Яндекс Диск

  • Доступно бесплатно 10 ГБ облачного хранилища
  • Интеграция с Office Online с возможностью редактирования документов

Облачное хранилище Яндекс Диск как давало раньше 10 ГБ пространства бесплатно, так и сейчас дает. В этом плане все стабильно. Интересной особенностью есть поддержка большого количества форматов и интеграция с Office Online.

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

Цена: 10 Гб бесплатно. 1 ТБ за 200 руб. в месяц.

Mega

  • Доступно бесплатно 50 ГБ
  • Простой пользовательский интерфейс
  • Наличие приложений для разных операционных систем и расширений для браузеров

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

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

Цена: 50 Гб бесплатно. 200 ГБ за € 4,99 в месяц.

One Drive

  • Доступно бесплатно 5 ГБ
  • Интеграция непосредственно в Windows 10
  • Интеграция с сервисами Microsoft

Облачное хранилище One Drive, ранее известное как SkyDrive, интегрировано в проводник операционной системы Windows 10. А это значит что Вам не нужно загружать дополнительных приложений, а его можно использовать сразу же после установки операционной системы Windows 10.

Плюсом есть наличие приложений для всех популярных операционных систем. Для использования облака, Вам нужно всего лишь создать учетную запись Microsoft. Автоматическая синхронизация облака на операционной системе Windows 10, говорит о том, что Вы уже можете использовать облако One Drive не подозревая этого.

Цена: 5 Гб бесплатно. 50 ГБ за $ 1,99 в месяц.

  • Доступно бесплатно 2 ГБ с возможностью расширения
  • Поддержка всех популярных операционных систем
  • Возможность настройки общего доступа
  • Возможность восстановления удаленных данных
  • Наличие партнерской программы

Облачное хранилище Dropbox предлагает бесплатно довольно ничтожное количество свободного места объемом в 2 ГБ. Согласитесь это довольно мало, если сравнивать с прямыми конкурентами. Но у Вас есть возможность бесплатно увеличить объем до 16 ГБ, связав свой Dropbox со социальными сетями и пригласив друзей.

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

Цена: 2 ГБ бесплатно. 1 ТБ за 10 долларов в месяц с Dropbox Plus.

Какое облачное хранилище лучше

Многих пользователей интересует вопрос, какое облачное хранилище лучше. Ответ простой, всё зависит от того как пользоваться облачным хранилищем, а именно с какой целью его использовать.

Если же говорить об простой синхронизации фотографий с мобильного устройства, то здесь лидирует Dropbox, Mail Облако, Яндекс.Диск, One Drive. Если же Вам необходимо облачное хранилище данных для учебы и работы, тогда стоит обратить внимание на Google Диск. Всё зависит действительно от Ваших потребностей.

Для того чтобы помочь Вам определится с выбором облачного хранилища в 2018 году мы проведем небольшое сравнение облачных хранилищ 2018 года.

Сравнение облачных хранилищ 2018

Google Drive Облако Mail Яндекс Диск Mega One Drive
Объем памяти 15 ГБ 8 ГБ 10 ГБ 50 ГБ 5 ГБ 2 ГБ
Доп. расширения +
Создавать документы в Office + + + +
Редактировать документы в Office + + + + +

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

Выводы

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

По итогу сравнения, тут фаворитов два, Mega — со своим большим объемом и Google Drive — с возможностью подключить разные расширения. Но если же Вы успели на акцию от Mail, где все могли получить 1 ТБ облачного пространства бесплатно, то облако Mail остается скорее всего для Вас фаворитом. А также если Вы пользуетесь смартфонами Samsung, где дается 50 ГБ пространства в облаке Dropbox, то можно и не искать новые облака. Основной выбор, как всегда остается за Вами.

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

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

Что такое облако для хранения файлов?

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

И действительно, при подключении облака к вашему компьютеру, на нем создается специальная папка. Особенность этой папки такова: все что в нее попадает, сразу же передается в облако. Одним словом — содержимое локальной папки, синхронизируется с точно такой же папкой на сервере.

Что дает использование «облака» простому пользователю?

Для простого пользователя облачное хранилище данных дает множество интересных преимуществ:

На данный момент, существует огромное количество хранилищ различных объемов. Есть отечественные, зарубежные. Из зарубежных можно выделить Dropbox и Google Drive. Из отечественных — Облако@Mail.Ru, Яндекс.Диск.

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

Итак, начнем. Если у Вас имеется почта на Яндексе, Mail.Ru, GMail — поздравляем! Вам не нужно дополнительно нигде регистрироваться. Пользователям этих сервисов доступны облачные хранилища сразу.

Для тех у кого есть аккаунт Google — Drive.Google.Ru

Владельцам аккаунта Яндекса — Яндекс.Диск

На момент написания статьи, в нашем хранилище Облако@Mail.Ru нам доступно 100 Гб так как несколько лет назад проводилась акция. Сейчас при регистрации на сервисе Вам дадут не много, не мало — 25 Гб облачного пространства.

На Яндекс.Диске у нас 10 Гб полезного пространства, Google любезно предоставил нам 15 Гб под три сервиса — Фотографии, Почту, и собственно сам Диск.

Грехом будет не упомянуть еще об одном зарубежном хранилище популярном в России — Dropbox.com

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

Программа-клиент облачного хранилища

У каждого уважающего себя сервиса облачного хранения данных, есть свое приложение позволяющее автоматизировать все процессы хранения, синхронизации, и управления данными. У всех вышеперечисленных сервисов есть приложения для PC, MAC, iOS, Android, и Linux.

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

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

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

Скачать приложения для Android и iOS можно в соответствующих магазинах, а для ПК и MAC достаточно пройти на сайт хранилища и скачать клиента.

Подключаемся к Dropbox с нуля

Создать облако для хранения файлов

Давайте попробуем зарегистрироваться в облачном хранилище данных — Dropbox. Для того, чтобы начать — пройдите по этой ссылке . Заполните поля: Имя , Фамилия , Почта и Пароль , поставьте галочку согласия с условиями сервиса. Нажмите кнопку <Зарегистрироваться> .

Сразу после этого Вас переадресует на страницу, где будет предложено скачать клиент Dropbox`a. Раньше такого не было, видимо решили брать «быка за рога» сразу.

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

Начнется «докачивание» клиента и последующая его установка на Ваш компьютер.

Завершение установки ознаменуется синим прямоугольным окном с предложением начать и открыть Dropbox.

Впереди вас ждут 4 или 5 экранов с рассказом о возможностях хранилища. Можете почитать, а можете и пропустить — все это вы прекрасно найдете позже сами.

И вот долгожданный момент настал. В вашем компьютере появилась новая папкаDropbox .

Быстро зайти в аккаунт

Давайте пройдем в свой аккаунт на сайте Dropbox`a. Для того, чтобы это сделать быстро (не вводить логин и пароль), откройте вашу свежесозданную папку Dropbox, щелкните на любом пустом месте правой кнопкой мыши и выберите пункт с пиктограммой синей коробочки «Просмотреть на Dropbox.com»
Должен открыться браузер и через пару секунд, вы попадете в свой аккаунт в хранилище. Что тут интересного?

Информация

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

Тут мы видим, что нам, на наши нужды дано всего-то 2 ГБ дискового пространства. «Мало» — скажете вы и будете совершенно правы. 2ГБ для нашего времени ничтожно мало. Почему же люди используют Dropbox?

  • Надежен
  • Кроссплатформенный (MacOS, iOS, Windows, Linux, Android)
  • Бесплатен
  • Хорошая скорость загрузки
  • Гибкие возможности управления файлами
  • Просмотр большинства документов в веб-интерфейсе
  • Редактирование документов в веб-интерфейсе
  • Есть возможность «заслужить» дополнительное пространство, но об этом ниже
  • Многие сайты позволяют взаимодействовать своим сервисом с вашим хранилищем

Подтверждение электронной почты

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

Проверим почту — письмо там:

Вскроем конверт и нажмем на синюю кнопку подтверждения:

Нас снова перебросит на страницу, где нас поблагодарят за подтверждение:

Теперь, мы можем работать с облаком спокойно.

Создадим папку и «поделимся»

Давайте попробуем создать папку с любым названием. Мы назовем именем девушки, с которой планируем обмен данными с помощью облака.

Всплывет небольшое окно, в котором:

  1. Вводим e-mail друга
  2. Назначаем другу полномочия
  3. Делимся!

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

«Зарабатываем» дополнительное пространство

Dropbox позволяет расширить ваше дисковое пространство всевозможными акциями. Например за каждого приглашенного друга (установившего Dropbox) вы получите дополнительно 500 Мб дискового пространства.

И вообще не помешает выполнить все предложенные системой задания и вам воздастся.

Честно говоря — 16 Гб видимо не предел бесплатного аккаунта. Старый аккаунт одного из постоянных посетителей сайта:

Подробнее о возможностях облачных хранилищ

Создание прямой ссылки на файл / папку

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

Домашний и рабочий компьютеры

Настройте Dropbox со своим аккаунтом на 2-х, 3-х, или большем числе компьютеров, и все они будут синхронизироваться! Дом, работа, в гостях у мамы, бабушки — не важно. Вы всегда сможете доделать работу, открыв нужный файл.

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

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

Создание скриншотов

Создать скриншот при наличии Dropbox не составляет труда. У Яндекс.Диска есть функция их моментального редактирования, чем Dropbox похвастаться не может. И тем не менее, для того чтобы сохранить скриншот в папку C:\Users\ИмяПользователя\Dropbox\Скриншоты нужно просто нажать кнопку на клавиатуре.

Сразу же можно вышеописанным способом «расшарить» скриншот и отправить другу. Все скриншоты для этой заметки сделаны именно с помощью Dropbox а обработаны в обычном Paint`e.

Передача снимков со смартфона в хранилище

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

Взаимодействие с веб-сервисами

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

Хорошим примером может послужить сервис обрезки и склеивания аудиофайлов www.mp3cut.ru находящийся на первой строчке по запросу «обрезать песню онлайн».

Как видно он поддерживает загрузку из двух популярных хранилищ, плюс ВК (чем не облачное хранилище?).

Заключение

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

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

Если Вас интересует более подробное описание Dropbox, или вы хотите увидеть нечто похожее для других облачных хранилищ — пишите в комментарии

Введение в XML-RPC

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

Реальный пример: страница банковского сайта, на которой показываются котировки валют. Если вы заходите на страницу как обычный пользователь, через браузер, вы видите все оформление страницы, баннеры, меню и другую информацию, которая "обрамляет" истинную цель поиска - котировки валют. Если вам надо вносить эти котировки в свой интернет-магазин, то ничего другого не останется, как только вручную выделить нужные данные и через буфер обмена перенести на свой сайт. И так придется делать каждый день. Неужели нет выхода?

Если решать проблему "в лоб", то сразу напрашивается решение: программа (скрипт на сайте), которой надо данные, получает страницу от сервера как "обычный пользователь", разбирает (парсит) полученный html-код и выделяет из него нужную информацию. Это можно сделать или обычным регулярным выражением, или при помощи любого html-парсера. Сложность подхода - в его неэфективности. Во-первых, для получения небольшой порции данных (данные о валютах - это буквально десяток-другой символов) надо получать всю страницу, а это не менее нескольких десятков килобайт. Во-вторых, при любом изменении кода страницы, к примеру, дизайн поменялся или что-то еще, наш алгоритм разбора придется переделывать. Да и ресурсов это будет отбирать порядочно.

Поэтому разработчики пришли к решению - надо разработать какой-то универсальный механизм, который бы позволил прозрачно (на уровне протокола и среды передачи) и легко обмениваться данными между программами, которые могут находиться где угодно, быть написанными на любом языке и работать под управлением любой операционной системы и на любой аппаратной платформе. Такой механизм называют сейчас громкими терминами "Веб-сервисы" (web-service), "SOAP", "архитектура, ориентированная на сервисы" (service-oriented architecture). Для обмена данными используются открытые и проверенные временем стандарты - для передачи сообщений протокол HTTP (хотя можно использовать и другие протоколы - SMTP к примеру). Сами данные (в нашем примере - курсы валют) передаются упакованными в кросс-платформенный формат - в виде XML-документов. Для этого придуман специальный стандарт - SOAP.

Да, сейчас веб-сервисы, SOAP и XML у всех на слуху, их начинают активно внедрять и крупные корпорации вроде IBM и Microsoft выпускают новые продукты, призванные помочь тотальному внедрению веб-сервисов.

Но! Для нашего примера с курсами валют, которые должны передаваться с сайта банка в движок интернет-магазина такое решение будет очень сложным. Ведь только описание стандарта SOAP занимает неприличные полторы тысячи страниц, и это еще не все. Для практического использования придется изучить еще работу со сторонними библиотеками и расширениями (только начиная с PHP 5.0 в него входит библиотека для работы с SOAP), написать сотни и тысячи строк своего кода. И все это для получения нескольких букв и цифр - явно очень тяжеловесно и нерационально.

Потому существует еще один, с натяжкой можно сказать альтернативный стандарт на обмен информацией - XML-RPC. Он был разработан при участии Microsoft компанией UserLand Software Inc и предназначен для унифицированной передачи данных между приложениями через Интернет. Он может заменить SOAP при построении простых сервисов, где не надо все "корпоративные" возможности настоящих веб-сервисов.

Что же означает аббревиатура XML-RPC? RPC расшифровывается как Remote Procedure Call - удаленный вызов процедур. Это значит, что приложение (неважно, скрипт на сервере или обычное приложение на клиентском компьютере) может прозрачно использовать метод, который физически реализован и исполняется на другом компьютере. XML тут применяется для обеспечения универсального формата описания передаваемых данных. Как транспорт, для передачи сообщений применяется протокол HTTP, что позволяет беспрепятственно обмениваться данными через любые сетевые устройства - маршрутизаторы, фаерволы, прокси-сервера.

И так, для использования надо иметь: сервер XML-RPC, который предоставляет один или несколько методов, клиент XML-RPC, который может формировать корректный запрос и обрабатывать ответ сервера, а также знать необходимые для успешной работы параметры сервера - адрес, название метода и передаваемые параметры.

Вся работа с XML-RPC происходит в режиме "запрос-ответ", в этом и есть одно из отличий технологии от стандарта SOAP, где есть и понятия транзакций, и возможность делать отложенные вызовы (когда сервер сохраняет запрос и отвечает на него в определенное время в будущем). Эти дополнительные возможности больше пригодятся для мощных корпоративных сервисов, они значительно усложняют разработку и поддержку серверов, и ставят дополнительные требования к разработчикам клиентских решений.

Процедура работы с XML-RPC начинается с формирования запроса. Типичный запрос выглядит так:

POST /RPC2 HTTP/1.0
User-Agent: eshop-test/1.1.1 (FreeBSD)
Host: server.localnet.com
Content-Type: text/xml
Content-length: 172



TestMetod
Привет, XML-RPC!


В первых строках формируется стандартный заголовок HTTP запроса POST. К обязательным параметрам относятся host, тип данных (MIME-тип), который должен быть text/xml, а также длина сообщения. Также в стандарте указывается, что поле User-Agent должно быть заполнено, но может содержать произвольное значение.

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

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

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

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

Tеперь разберем ответ сервера. Заголовок HTTP ответа обычный, если запрос успешно обработан, то сервер возвращает ответ HTTP/1.1 200 OK. Также как в запросе, следует корректно указать MIME-тип, длину сообщения и дату формирования ответа.

Само тело ответа следующее:



true


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

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

А теперь рассмотрим кратко типы данных в XML-RPC. Всего типов данных есть 9 - семь простых типов и 2 сложных. Каждый тип описывается своим тегом или набором тегов (для сложных типов).

Простые типы:

Целые числа - тег или ;

Логический тип - тег , может принимать как значения 0/1, так и true/false;

ASCII-строка - описывается тегом и может содержать произвольную строку символов;

Числа с плавающей точкой - тег , могут также содержать знак числа, дробная часть отделяется точкой;

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

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

Сложные типы представлены структурами и массивами. Структура определяется корневым элементом , который может содержать произвольное количество элементов , определяющих каждый член структуры. Член структуры описывается двумя тегами: первый, , описывает имя члена, второй, , содержит значение члена (вместе с тегом, описывающим тип данных).

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

Конечно, кто-то скажет, что такой перечень типов данных очень беден и "не позволяет развернуться". Да, если надо передавать сложные объекты, или большие объемы данных, то лучше использовать SOAP. А для небольших, нетребовательных приложений вполне подходит и XML-RPC, более того, очень часто даже его возможностей оказывается слишком много! Если учесть легкость развертывания, очень большое количество библиотек для почти любых языков и платформ, широкую поддержку в PHP, то XML-RPC часто просто не имеет конкурентов. Хотя сразу советовать его в качестве универсального решения нельзя - в каждом конкретном случае надо решать по обстоятельствах.

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

На днях сайты моего хостинга, мягко говоря, — «прилегли». Было видно, что DOS-ят какой то из сайтов.

А видно это прежде всего из статистики использования ресурсов сервера:

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

Что видно на диаграмме?

На первой картинке мы наблюдаем загрузку процессора. Она измеряется в 100% на одно ядро. Где то 15.00 по гринвичу атака началась, а в районе 21.00 я попросил провайдера что то с этим сделать. Тех поддрежка начала перенос хостинга на другой мастер-сервер. Видимо, чтобы дать мне возможность использовать больше системных ресурсов. Часов в 22:00 начался переезд, проверка целостности файлов и другие процедуры.

Не хотелось на самом деле даже возиться — и я просто лег спать, ибо, «утро вечера мудренее».

Что видно в логах сервера?

Статистика на утро уже не показывала каких либо аномалий. Сайты все равно открывались через раз и далеко не сразу, т.е. атака продолжалась. То ли статистика писалась все ещё со старого сервера, то ли это уже были данные мастер-сервера…

Поэтому я перешел к изучению логов, чтобы выяснить куда «стучат».

Когда я поглядел в логи, стало ясно, что можно не беспокоиться — стучит какая то школота с одного и того же ip адреса в /xmlrpc.php одного из моих сайтов на WordPress. Скорее всего занимается брут-форсом админского пароля.

Приятного конечно же мало, так как «лежат» и все остальные сайты виртуального сервера. И самое досадное, что я не использую эти XML сервисы ни на одном из своих WP сайтов.

Блокируем XML RPC.

Самое простое, что вы можете сделать в данной ситуации — удалить из корневой папки сайта файл /xmlrpc.php . Сервер не найдя скрипа, не будет запускать PHP, тратить ресурсы памяти и время процессора. Решение простое, но не красивое. Во-первых, кто то может пользоваться возможностями RPC. К примеру, публиковать записи на сайт через один из многих Weblog клиентов. А во-вторых, файл будет восстановлен после очередного обновления WP.

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

# XML-RPC DDoS PROTECTION Order Deny,Allow Deny from all

# XML-RPC DDoS PROTECTION

< FilesMatch "^(xmlrpc\.php)" >

Order Deny , Allow

Deny from all

< / FilesMatch >

В моем случае можно было заблокировать только IP-адрес источника запросов, т.к. использовался один и тот же адрес. Для блокировки только IP адреса «школодосера»:

Order Allow,Deny Deny from 85.93.93.157 Allow from All

< FilesMatch "^(xmlrpc\.php)" >

Order Allow , Deny

Deny from 85.93.93.157

Allow from All

< / FilesMatch >

Но если вы пользуетесь RPC, то можно составить белый список адресов, которые имеют доступ к скрипту xmlrpc.php.

Order Deny,Allow #add your IP adresses Allow from 127.0.0.1 Allow from XX.XX.XX.XX ... Deny from all

< FilesMatch "^(xmlrpc\.php)" >