Delphi. UniGUI. Анонимайзер ссылок с ограничением срока действия

Напишем простой анонимайзер ссылок на UniGUI с ограничением срока действия ссылок. Для начала сделаем простой вариант – с опорой на API стороннего сервиса. Наша задача – лишь прикрутить к такой ссылке ограничение по времени. Естественно, если мы используем сторонний сервис, то умные люди просто скопируют анонимизированную ссылку после перехода. Но можно и загружать весь контент с подменой ссылок – и для большинства простых сайтов этот способ будет работать. Но пока не будем усложнять и сделаем всё на API стороннего сервиса. Цель данного поста – разобраться – как вообще это можно сделать на UniGUI.

Вот как будет выглядеть программа.

Логин форма

Главная форма

14

Промежуточная форма – для случайно зашедших

15

 

Начали!

Логин форма

По умолчанию, в UniGUI загружается Логин-форма, если она существует. Либо, можно поставить ей параметр Visible:=True в объектном инспекторе и тогда она будет показана первой.

Итак, если пользователь набирает в адресной строке

,то показываем ему логин форму, в OnShow пропишем следующее

То есть, если такого параметра нет – мы прячем логин форму от случайного пользователя.

Как показать скрыть пароль на логин-форме?

Как добавить CAPTCHA к логин форме?

Отдельная статья по добавлению CAPTCHA

Как обработать кнопку Enter?

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

Центрирование элементов и создание CAPTCHA

Update CAPTCHA

Главная форма

14

 

Собственно здесь мы шифруем нашу исходную ссылку

1. Делаем всевозможные проверки – на пустоту, есть ли уже такие зашифрованные параметры. Параллельно выделяем GET параметры, если они были

2. Добавляем наши параметры – использовать ли сторонний сервис? Использовать ли ограничение по времени?

В принципе ничего сложного, но было пара моментов с особенностями самого UniGUI.

Промежуточная HELLO форма

Цель данной формы – поздороваться со случайным прохожим либо сделать редирект на нужный ресурс, если в GET параметрах мы нашли необходимое…

Здесь все основное действие будет происходить в AfterSHow, потому что в OnSHow Redirect работал некорректно…

Тестируем

Закриптуем ссылку данного блога

16

 

Теперь перейдем по ней в браузере, предварительно изменив условие проверки времени на следующее

Это сильно облегчит проверку кода. Вот что мы увидим

17

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

18

Выводы

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

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

Исходники

366_ecryptlinkunigui

This entry was posted in Delphi, UniGui. Bookmark the permalink.