Кошерная передача данных через web-форму.

29 января 2016, 14:00

Кошерная передача данных через web-форму.

Кошерная передача данных через web-форму.

Всякую сущность
Вести к совершенству -
Вот путь самурая.

Первый уровень абстракции.

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

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

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

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

Поэтому русский человек быстро смекает, что к чему.

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

Для стороннего наблюдателя это имеет смысл. Действительно, Панель красива, любой кусок HTML в её коде целесообразен, и сама Панель вроде бы взаимодействует со Вселенной. Хотя на самом деле нет.

Потому что на компе, с которого действительно осуществляется управление Вселенной, поднят локальный Web-сервер с собранным в ней доменом Гугла, единственное назначение которого - подсунуть в нужном URL-е под видом jQuery «правильный» скрипт.

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

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

Но то было лишь предисловие.

Ущербный WEB.

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

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

Теперь достаточно просто запустить htm файлик с этой формой. Она автоматически засубмитится специальным оператором на Джаве, и в окошке откроется сайт в уже авторизованном состоянии. Это удобно, но сильно настораживает.

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

Чуть менее ущербный WEB.

Вместе с тем любую форму можно сделать не столь тупой, каковой она идёт «из коробки». Каждый может над ней изгаляться, как умеет, но местному автору подумалось вот в какую сторону.

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

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

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

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

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

Или наоборот. Прошло слишком много времени с момента создания формы.
Скорее всего, это попытка какого-то хака, так что данные тоже не принимаем.

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

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

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

Движок хитрой национальности.

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

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

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

Другие статьи категории «Софт от Мастера Ласто»

Детство в попе отыграло, игры кончились.

Детство в попе отыграло, игры кончились. В Стране наметился новый тренд. Повышение зарплат вдвое. Что давно уже случилось у вояк и полицаев (ох, и не любят их теперь в народе), а с недавних пор — и у чиновников Кремля и правительства. Чего уж там мелочиться. В более-менее нормальных конторах (банковский сектор, к примеру) также принято где-нибудь по весне планово поднимать оклады на 5-10%.

Развлечение для владельцев Шопов от Мастера Ласто.

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

Почтовая Выхухоль.

Почтовая Выхухоль. Захотелось вдруг поворошить былое. Поностальгировать про давно забытое, а по итогу этих мемуаров неназойливо так попроповедовать про реинкарнацию сущностей. С чего некоторым будет прямая польза в том месте, где её никто и не ждал. Когда-то давно, в эпоху безраздельного царствования Perl-а, возомнилось вдруг местному автору, что не зря он в далёкой юности учился программировать на Фортране.
29 января 2016, 15:47

№ 1Пытання от чайника


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

Хакеры-стажёры уже умеют такие вещи смотреть.
Все прочие пользуют в неосознанном фоновом режиме.


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

Нет, под Вселенной понимается что-нибудь более глобальное.
С маржой, линией сопротивления, и прочим онанизмом на борту.
Игорь
29 января 2016, 19:41

№ 2Собиратели паролей

А как быть, если стоит плагин для браузера, который помнит все мои явки и пароли? Скорость его срабатывания, наверное, сопоставима с Хрумером.
Смогу ли я тогда зайти в свою обитель?
Да, конечно. Стандартный функционал по запоминанию паролей самого браузера прекрасно функционирует. Он привязывается к типу полей вида password, а конкретные имена полей вполне могут быть рандомными.
Максим Косенко
29 января 2016, 22:11

№ 3Форма авторизации

Почему бы не добавить такой же древний фокус:
1. в разметке формы добавляем поля со стандартными именами login/password
2. скрываем их и disable'им
3. на стороне сервера - если !empty хоть одно из них - банить бота с первой же попытки
Ну вообще-то поля с атрибутом disabled в массиве $_POST потом тупо отсутствуют, если ничего не путаю. Примерно как не выбранный чекбокс.

Ну и как бы нафиг надо, ибо против брутфорса работает другой механизм.

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

И да, есть много сервисов типа "введите URL страницы и получите её в виде PDF". Они тоже используют ровно те же самые библиотеки, и в PDF-е на выходе сервиса вы не увидите скрытых полей.

Бот их тоже заполнять не станет :)
judgefog
01 февраля 2016, 19:31

№ 4Накуренные ишаки

Часто умники, обкурившись травы осенезированной ослами, ведут себя как ослы. Им кажется, что их мысли божественны, а вместо этого из их уст вырывается классическое иа-иа. Такие аффтыры годами рисуют мурзилки, которыми сами и восхищаются, при этом постоянно издавая невероятной красоты звуки иа-иа. В то же время, простые люди, с не загаженным ослиными экскрементами головами смотрят на таковых ластоголовых умников и все больше понимают, что ласты вместо ушей - это признаки ослов!
Да, местный автор всегда предполагал, что делать нечто полезное и давать это людям - концепция, устаревшая на 2000 лет. Нет проблем. Учтём, и больше так поступать не станем.
Тарас
01 февраля 2016, 21:44

№ 5Мастер предполагает неверно, ИМХО.

К № 4

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

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

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

Да и глаза округлились от способа защиты из поста, всяко Мастер - тот ещё затейник. Интересно, что последует за...

По теме:
Не хватает только user'ов в админке Nano-CMS, которым доступно только редактирование полей формы(title, content, ) в определённых папках, без доступа к изменению файлов php.

Но это решаемо правильным программированием без доступа к папкам и одним файлом редактора. Кто бы написал только... :)

airsound
03 февраля 2016, 20:11

№ 6Почти велосипед

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

Например в Laravel (такой фреймворк) уже давным давно есть CSRF-защита. Она призвана пропускать POST-запросы только с сайта на котором сгенерирована форма. И даже проверяет время формирования хэша и время отправки запроса. И если перерыв существенен, то кидает ошибку.
А если ещё посмотреть в сторону уязвимостей mysql инъекций...

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

Интересно, как местный автор относится к Laravel?
Никак не относится.

Проверку источника формы он юзал ещё 12 лет назад.
Для всего остального фреймворк не нужен.
Достаточно несколько десятков строк кода.

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

Звучит кощунственно, но если провести аналогию между чуждым сознанию фреймворком и всякими там Джумлой с Вордпрессом, которые ломают, только шум стоит, то юзать велосипед поспокойнее будет.
Владимир
03 февраля 2016, 20:27

№ 7Добавлю и я свои пять копеек про Нану

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

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

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

Так неужели столкнет самурая с пути чей-то язвительный комментарий?! Еще бы комментарии в Скрытную Нану встроить, и совсем праздник во всю улицу, и ну его этот вордпресс.
Комментарии отныне встраиваются куда годно.
Олег
05 февраля 2016, 17:19

№ 8Хорошая, однако, штуковина... Наверное.

Сначала с ужасом смотрел на верхнюю часть файла с дизайном. Эк, как там всё лихо закручено! Через минуту понял, что это такое, вообще, и нафига так дофига. Заглянул в папку с иконками, чтобы убедиться. Приводит в тоску осознание того факта, что надобно сооружать такое дикое количество картинок. Но не рушить же собственное счастье. Я заметил, что местный автор крайне не любит лишнего - аскет... В чём-то. Где-то. Иногда. Наверное. Значит, оно имеет смысл, раз так много букв нерусских нарисовано, да так и оставлено, как нарисовано. Ну а коль так...
Иконки делаются силами favicon-generator.org
Кому это всё не надо, тот блюдёт традицию.
Ограничиваясь одной штукой.

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

Для полного счастья бы ещё те же варианты дизайна... Лень же, блин, колонки двигать! Будет такое, аль нет? Ведь есть уже, как вижу на сайте авторском.
Автор не большой мастак дизайны писать.
Что украл, то и позаимствовал.
Каждый свою чебурашку сам причёсывает.
Хоть по шерсти, хоть против - как душе угодно.

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

Недавно шёл по рынку и увидал низкий дубовый табурет. Он мне нафиг был не нужен! Но так хорошо был сделан!!! Крутил, вертел, искал что-нибудь, что не понравилось бы. Не нашёл. Ну и... А куда деваться? Так и со скриптами местного автора происходит. А табурет подарил потом хорошему человеку.
Нана и есть тот самый табурет.
Любоваться на его решения можно бесплатно.
На какие-то специфичные функции - через музей.
Всё как обычно.
Не можно же старую собаку научить новым трюкам...
Дмитрий
15 февраля 2016, 16:26

№ 10Приятно видеть Нану Новую

Удивило, и обрадовало.
Знаком достаточно давно - первый движок, который в первый раз воткнул на первый хост.

Спасибо Мастеру Ласто за творчество, пошедшее в паблик.
Дмитрий
17 февраля 2016, 17:22

№ 11Комментарии рулят...

Благодарю Мастера за Общительную Нану.
Ко всему прочему, приятная сущность.

Интересно только, получится ли её прикрутить к Похитителю Буковок в случае необходимости?
Вряд ли. Чисто нановое решение.
airsound
Все заметки категории «Софт от Мастера Ласто»