[php] Ist es möglich, ein sicheres Webformular ohne https-Server zu haben?


Answers

Sie könnten eine Form der öffentlichen Schlüsselverschlüsselung verwenden, die in JavaScript implementiert ist :

  • Sie geben dem Client das Formular, Ihren öffentlichen Schlüssel und eine js-Verschlüsselungsbibliothek
  • Bei der Übertragung verschlüsselt js die Form-Payload
  • Sie entschlüsseln mit Ihrem privaten Schlüssel

Das würde verhindern, dass jemand Ihre vertraulichen Informationen auf dem Draht schnüffelt, bietet aber keinen Schutz gegen einen Man-in-the-Middle-Angriff. SSL macht einen solchen Angriff ein wenig komplizierter, aber nicht unmöglich.

Question

Ich habe eine Website bei einem Provider gehostet, die mir keine feste IP-Adresse gibt, so dass ich https nicht verwenden kann. Ich möchte einige Seiten mit einem Webformular bearbeiten, aber auf sichere Weise.

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

  • 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.




Ja. Sie können ein eingebettetes Formular mit PGP-Verschlüsselung aus privaten Formularen 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.

Die Person, die die Formulare ausfüllt, weiß also, dass sie "sicher" ist, aber sie muss nicht mit den Details vertraut sein (wie Schlüssel generieren usw.).




Theoretisch könnten Sie eine sichere Kommunikation zwischen dem Client und dem Server mithilfe 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 schon sagt, selbst wenn es Ihnen gelänge, in JS zu implementieren, müssten Sie dem JS über eine unsichere Verbindung immer noch den JS bereitstellen, was alles ziemlich sinnlos macht.

Noch sind verrückte Dinge in Javascript implementiert worden, bevor ...




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.

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




SSL arbeitet mit dem Domain-Namen, nicht mit einer IP-Adresse. Solange Sie einen Domainnamen haben 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.

Davon abgesehen, vorausgesetzt, Sie können es nicht tun, schauen Sie in SRP :

Von der Website: "SRP ist ein sicheres Passwort-basiertes Authentifizierungs- und Schlüsselaustausch-Protokoll. Es löst das Problem der sicheren Authentifizierung von Clients an Servern ... Darüber hinaus tauscht SRP als Nebenprodukt einer erfolgreichen Authentifizierung ein kryptographisch starkes Geheimnis aus ermöglicht den beiden Parteien eine sichere Kommunikation. "

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

Wie bei den meisten Postern wäre es jedoch besser, wenn Sie zu einem neuen Anbieter wechseln.




Links