Возможно ли иметь безопасную веб-форму без сервера https? - PullRequest
6 голосов
/ 05 февраля 2009

У меня есть веб-сайт, размещенный у провайдера, который не дает мне фиксированный IP-адрес, поэтому я не могу использовать https. Я хотел бы редактировать некоторые страницы, используя веб-форму, но безопасным способом.

Клиент будет устройством типа iphone, поэтому о java или flash апплете не может быть и речи.

  • Есть ли способ сохранить безопасное соединение между сервером и браузером, используя только JavaScript в браузере?

Язык на сервере в настоящее время php, но это может быть ruby, python, perl или lua.

Ответы [ 10 ]

12 голосов
/ 05 февраля 2009

Для установки сертификата SSL технически не требуется фиксированный IP-адрес - сертификат SSL привязан к имени хоста (общему имени). Мы часто меняли IP-адреса на наших хостах и ​​никогда не меняли ничего, связанного с сертификатами.

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

5 голосов
/ 05 февраля 2009

Вы можете использовать некоторую форму шифрования с открытым ключом , реализованную в javascript :

  • Вы предоставляете клиентской стороне форму, свой открытый ключ и библиотеку шифрования js
  • При отправке js запускает шифрование формы полезной нагрузки
  • Вы расшифровываете свой личный ключ

Это помешает кому-либо прослушивать вашу конфиденциальную информацию по проводам, но не обеспечивает никакой защиты от атаки "человек посередине". SSL делает такую ​​атаку немного хитрее, но не невозможной.

4 голосов
/ 05 февраля 2009

Не в традиционном смысле, нет, но есть несколько вариантов:

  1. Получите лучший хостинг. Вы можете иметь VPS с фиксированным IP за 20 долларов в месяц. Сертификат на 30 долларов в год. Довольно дешево для людей, которым нужна безопасность.

  2. Вы можете зашифровать данные формы , используя javascript и PGP . Это дешево (и это будет выглядеть для ваших пользователей), но должно сохранить ваши данные достаточно безопасными.

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

3 голосов
/ 05 февраля 2009

В теории вы можете реализовать какую-то безопасную связь между клиентом и сервером, используя Javascript и XmlHttpRequests. На практике это звучит как большая работа, и шансы быть быстрой и по-настоящему безопасной кажутся низкими.

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

Тем не менее, в Javascript раньше были реализованы более сумасшедшие вещи ...

1 голос
/ 05 февраля 2009

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

Также не обязательно иметь фиксированный IP-адрес - у вас есть доменное имя?

1 голос
/ 05 февраля 2009

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

0 голосов
/ 01 сентября 2015

Да. Вы можете использовать встроенную форму с использованием шифрования PGP из Private Forms .

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

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

0 голосов
/ 31 августа 2010

Прошло почти 2 года, но теперь в JavaScript есть реализация SSL / TLS с открытым исходным кодом. Однако в настоящее время он использует Flash для обеспечения доступа к необработанным сокетам ... поэтому, если приложение не будет работать на телефоне с Android, а не на iphone, это может оказаться не таким уж полезным.

http://github.com/digitalbazaar/forge/blob/master/README

0 голосов
/ 05 февраля 2009

SSL работает вне доменного имени, а не IP-адреса. Если у вас есть доменное имя и у вас есть его, и у вас есть провайдер, желающий открыть порт 443 и установить сертификат, приобретенный для вашего сайта, вы можете использовать HTTPS.

Как говорится, если вы не можете этого сделать, посмотрите на SRP :

С сайта: «SRP - это безопасный протокол аутентификации и обмена ключами на основе паролей. Он решает проблему безопасной аутентификации клиентов на серверах ... Кроме того, SRP обменивается криптографически надежным секретом как побочным продуктом успешного аутентификация, которая позволяет обеим сторонам безопасно общаться. "

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

Однако, как и большинство постеров, вам, вероятно, лучше перейти к новому провайдеру.

0 голосов
/ 05 февраля 2009

Как можно было бы использовать Javascript? Для того чтобы браузер мог выполнить JavaScript, он должен сначала загрузить его с (ранее заявленного) небезопасного сервера. HTTPS - это протокол сервер / клиент, поэтому, если вы не можете реализовать его на самом сервере, вы вообще не сможете его реализовать.

Все, что вам нужно для HTTPS - это один IP-адрес, поэтому не имеет значения, изменился ли он. Вы должны иметь возможность использовать HTTPS с динамическим IP-адресом, но вам может потребоваться поговорить с вашим хостером. Если ваш хостинг находится на общем сервере, он не будет работать, и вам понадобится выделенный IP. Они не такие дорогие, так что, может быть, вам стоит раскошелиться на 3/4 доллара в месяц?

Alex

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