Есть ли способ, кроме SSL, разрешить безопасный ввод на веб-страницах? - PullRequest
3 голосов
/ 02 марта 2012

Я хочу настроить страницу проекта на GitHub, чтобы она действовала как живой сайт.

Для сайта потребуется API sid & token (обе это просто длинные строки текста), которые в автономной среде пользователь просто добавил бы в файл конфигурации.

Если я размещу это на страницах проекта GitHub, пользователи предоставят свой sid / токен через форму. Страница с формой должна обслуживаться по протоколу SSL, чтобы sid / токен не передавался в виде открытого текста. Проблема в том, что страницы проекта GitHub не поддерживают SSL.

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

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

sid / token используется в вызовах curl для API, который является , отправляемым по SSL. Возможно, есть способ направить ввод формы непосредственно на этот URL-адрес SSL вместо того, чтобы он проходил по странице проекта GitHub без SSL ...

Есть идеи?

1 Ответ

2 голосов
/ 02 марта 2012

Вы можете просто присвоить атрибуту action формы HTTPS URL целевого сценария, если это возможно.

Вы также можете использовать какую-либо схему шифрования / хеширования Challenge-Response с использованием Javascript.Алгоритм для этого будет выглядеть примерно так:

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

HOWEVER

Злоумышленник с посредником, способный изменять трафик (например, с помощью ARP poisening, DHCP или DNS-спуфинга), всегда может лишить все ваши стороны клиентамеханизмы защиты от обслуживаемого HTML.Взгляните на SSLStrip , чтобы найти инструмент для перезаписи HTTPS-URL-адресов для незащищенных HTTP-URL-адресов на лету.Вызов-ответ может быть побежден примерно так:

  1. Сохраните токен, отправленный сервером, удалите Javascript из формы HTML.
  2. Поскольку отправка формы сейчас не перехватывается,мы получаем необработанные входные данные.
  3. Хешируем данные, используя тот же алгоритм, который выполнял бы Javascript.
  4. Спасибо за всю рыбу.

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

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