Удаленная активация/деактивация и защита от выхода из бизнеса

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

Схема, которую я представляю:

server makes twice daily check to web page using a URL like:
http://www.ourcompany.com/check.php?myID=GUID&Code=MyCode

Затем он возвращает ответ, который либо не содержит ничего интересного, либо GUID и значение.

GUID=0

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

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


person mj2008    schedule 17.04.2009    source источник


Ответы (3)


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

Приложение ежедневно проверяет доступ к веб-сайту, содержащему управляющий файл, зашифрованный с помощью шифрования с открытым ключом. Он расшифровывает в памяти, и если находит свой GUID, то он должен соответствовать коду. Чтобы отключить операцию, код устанавливается равным 0 (ноль), что всегда приводит к сбою. Когда он отключен, он проверяет каждые две минуты, чтобы обеспечить быстрое восстановление. Существует также ручной механизм генерации кода, который будет работать в течение недели в случае проблем с сервером.

Код позволит до 14 дней не подключаться к серверу, прежде чем он воспримет это как преднамеренную попытку заблокировать его. Через 10 дней он показывает сообщение об ошибке, в котором предлагается связаться со службой поддержки.

person mj2008    schedule 31.08.2009

Этот метод действительно легко обойти: просто используйте локальный DNS-сервер, чтобы указать www.ourcompany.com на локальный компьютер, или используйте http-прокси. Затем пользователь может вернуть программе любой ответ, который он хочет.

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

person PiedPiper    schedule 17.04.2009
comment
Мм да. Хорошо, мы пойдем с зашифрованным файлом с открытым ключом, так что у нас должна быть хорошая загрузка и декодирование, иначе это не удастся. Бизнес или решение для программирования? Возможно, но это решать мне, программисту. - person mj2008; 17.04.2009

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

person McGovernTheory    schedule 18.04.2009