2009-02-05 7 views
6

Ich habe eine Website auf einem Provider gehostet, die mir keine feste IP-Adresse gibt, so kann ich nicht https verwenden. Ich möchte einige Seiten mit einem Webformular bearbeiten, aber auf sichere Weise.Ist es möglich, ein sicheres Webformular ohne https-Server zu haben?

Der Client wäre ein iPhone Typ Gerät, so dass ein Java oder Flash-Applet wäre nicht in Frage.

  • Gibt es eine Möglichkeit, eine sichere Verbindung zwischen dem Server und dem Browser herzustellen, indem nur JavaScript im Browser verwendet wird?
  • Die Sprache auf dem Server ist derzeit PHP, aber es könnte Ruby, Python, Perl oder Lua sein.

    +0

    Ich glaube nicht, eine feste Adresse zu haben, hat etwas mit https zu tun ... AFAIK alles, was Sie brauchen, ist für den Anbieter eine SSL-Cert zu bieten und auf Port 443 zu hören –

    +0

    Was meinst du mit sicher? –

    Antwort

    1

    Ich würde sagen, die Antwort ist nein. Der Grund dafür ist, dass ohne https der gesamte Datenverkehr unverschlüsselter Klartext ist. Daher wäre jeder Verschlüsselungsalgorithmus oder Schlüsselaustausch auf der Clientseite für jeden lesbar. Ich könnte aber auch falsch liegen ... Ich habe es noch nie versucht.

    +0

    Nun, der Schlüsselaustausch muss unabhängig vom Protokoll unverschlüsselt funktionieren. –

    0

    Wie wäre es möglich, Javascript zu verwenden? Damit der Browser das Javascript ausführen kann, müsste es zuerst von dem (zuvor genannten) unsicheren Server heruntergeladen werden. HTTPS ist ein Server/Client-Protokoll. Wenn Sie es nicht mit dem Server selbst implementieren können, können Sie es nicht implementieren.

    Alles, was Sie für HTTPS benötigen, ist eine einzelne IP-Adresse, es wäre also egal, ob es sich geändert hat. Sie sollten HTTPS mit einer dynamischen IP verwenden können, aber möglicherweise müssen Sie mit Ihrem Hoster sprechen. Wenn sich Ihr Hosting auf einem freigegebenen Server befindet, funktioniert es nicht und Sie benötigen eine dedizierte IP. Sie sind nicht so teuer, also sollten Sie vielleicht nur die $ 3/4 pro Monat ausgeben?

    Alex

    +0

    Sie haben Recht. Wenn Sie darauf angewiesen sind, den JS von einem unsicheren Server herunter zu laden, sind Sie bereits fertig, weil der JS auf dem Weg geändert werden könnte, bösartig zu sein und die Daten einfach unverschlüsselt an einen anderen Ort zu senden. Derselbe Grund, warum die unsichere Seitenbuchung auf der sicheren Seite nicht sicher ist. – Kibbee

    3

    In Theorie Sie könnten eine Art sicherer Kommunikation zwischen dem Client und dem Server unter Verwendung von Javascript und XmlHttpRequests implementieren. In der Praxis klingt das nach viel Arbeit und die Chancen, dass es schnell und wirklich sicher ist, scheinen gering.

    Wie Alex oben gesagt hat, selbst wenn Sie es in JS implementieren konnten, müssten Sie dem JS immer noch den Server über eine unsichere Verbindung bedienen, was alles ziemlich sinnlos macht.

    Noch verrückte Dinge, bevor sie in Javascript umgesetzt worden ...

    12

    ein SSL-Zertifikat installiert technisch keine feste IP-Adresse benötigen - das SSL-Zertifikat auf die Hostnamen gebunden ist (common name). Wir haben häufig die IP-Adressen unserer Hosts geändert und nie etwas in Bezug auf die Zertifikate geändert.

    Das heißt, Sie könnten tatsächlich JavaScript oder dergleichen verwenden, aber es ist nicht wirklich eine nette Lösung - es wird immer wie ein Hack riechen.

    5

    Sie irgendeine Form von public key encryption implemented in javascript verwenden:

    • Sie geben Client-Seite die Form, den öffentlichen Schlüssel und eine js Verschlüsselungsbibliothek
    • Bei Vorlage, js Tritte in einem verschlüsseln die Form Nutzlast
    • Sie entschlüsseln mit Ihrem privaten Schlüssel

    die jemand von Sniffing Ihre sensiblen Informationen auf dem Draht verhindern würde, aber bietet keinen Schutz gegen eine Man-in-the-Mitte dle Angriff. SSL macht einen solchen Angriff ein wenig komplizierter, aber nicht unmöglich.

    +0

    Wie verhindern Sie, dass sensible Daten auf der Leitung erfasst werden, aber kein MITM-Angriff? Sind sie nicht ein und dasselbe? – Kibbee

    +0

    Nicht wirklich - ein unverschlüsselter Stream braucht keinen MITM-Angriff, um es doch zu lesen. Wohlgemerkt, es ist nicht so, dass SSL viel mehr MITM-Minderung bietet, aber es ist ein bisschen schwieriger. –

    1

    Es ist theoretisch möglich, vorausgesetzt, Sie können den Client steuern und (zum Beispiel) vertrauenswürdiges Javascript dort haben, das nicht vom Server heruntergeladen wird. Ich könnte etwas ausarbeiten, aber irgendetwas in diesen Zeilen ist ein PITA und fehleranfällig im Vergleich zur Verwendung von https.

    Auch sollte es nicht notwendig sein, eine feste IP zu haben - haben Sie einen Domain-Namen?

    +0

    In dem in der Frage erwähnten iPhone-Fall ist das Vertrauen in Javascript, das nicht vom Server heruntergeladen wurde, nicht möglich. – andynormancx

    +0

    Ja, wenn es eine Web-App ist - aber es ist nicht klar aus der Frage, ob eine native App eine Option ist. Wenn nicht, dann ist das, was das OP tun möchte, nicht möglich, es sei denn aktive Angriffe sind kein Problem. – frankodwyer

    4

    Nicht im herkömmlichen Sinne, nein, aber es gibt ein paar Optionen:

    1. besser Hosting Holen. Sie könnten a VPS with a fixed IP für $ 20/Monat haben. Zertifikat für 30 $ pro Jahr. Ziemlich billig für Leute, die die Sicherheit brauchen.

    2. Sie könnten die Formulardaten using javascript and PGP verschlüsseln. Dies ist billig (und es wird es für Ihre Benutzer aussehen), aber es sollte halten Sie Ihre Daten sicher genug.

    3. Es könnte Dritte geben, die das Senden von Formularen über ihre Server (und damit auch ihre Zertifikate) erlauben. Sie und Ihre Benutzer müssen darauf vertrauen, dass sie die Daten nicht missbrauchen.

    +0

    +1. Einen besseren Hosting-Provider zu bekommen, ist wahrscheinlich die beste Option. Welche Art von crappy Hosting-Provider unterstützt keine festen IPs und SSL-Zertifikate? – Kibbee

    +0

    Nicht jeder hat das Geld, um statische IPs oder SSL-Zertifikate zu erwerben. (Selbstsigniert verursacht immer noch ein Popup in Browsern, das beim Senden eines Formulars als Entwurf wie ein Fehler aussieht). – Sukima

    0

    SSL arbeitet mit dem Domänennamen, nicht mit einer IP-Adresse. Solange Sie einen Domain-Namen besitzen und besitzen und ein Provider bereit ist, Port 443 zu öffnen und das Zertifikat zu installieren, das Sie für Ihre Site gekauft haben, können Sie HTTPS ausführen.

    aber sagen, dass vorausgesetzt, Sie kann es nicht tun, schauen Sie in SRP:

    Von der Website:. "SRP ist ein sicheres Passwort-basierte Authentifizierung und Schlüsselaustausch-Protokoll das Problem der Authentifizierung von Clients löst zu Servern sicher ... Darüber hinaus tauscht SRP ein kryptographisch starkes Geheimnis als Nebenprodukt einer erfolgreichen Authentifizierung aus, wodurch die beiden Parteien sicher kommunizieren können. "

    Sie haben ein Javascript Beispiele. Sie würden das Nebenprodukt verwenden, um die Daten über die Leitung zu verschlüsseln.

    Wie bei den meisten Postern ist es jedoch wahrscheinlich besser, zu einem neuen Anbieter zu wechseln.

    0

    Es ist fast 2 Jahre später, aber jetzt gibt es eine Open Source SSL/TLS-Implementierung in JavaScript. Momentan ist Flash jedoch auf Flash angewiesen, um rohen Socket-Zugriff zu ermöglichen. Wenn die Anwendung also nicht auf einem Android-Telefon, sondern auf einem iPhone ausgeführt wird, ist sie möglicherweise nicht sehr hilfreich.

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

    0

    Ja. Sie können ein eingebettetes Formular mit PGP-Verschlüsselung von Private Forms verwenden.

    Private Forms ist SaaS, das clientseitige Webformulardaten vor dem Senden der Daten an den Server verschlüsselt. Dann werden diese verschlüsselten Daten an Sie gesendet. Alle Daten werden mit Ihrem öffentlichen PGP-Schlüssel verschlüsselt, den Sie nur mit Ihrem privaten PGP-Schlüssel entschlüsseln können.

    Also die Person, die die Formulare ausfüllt, weiß, dass es "sicher" ist, aber sie müssen nicht mit den Details vertraut sein (wie das Generieren von Schlüsseln usw.).

    Verwandte Themen