2016-03-22 6 views
0

Ich versuche derzeit, die PayPal-Sofortkauf-Funktion zu meinem benutzerdefinierten Drittanbieter-Einkaufswagen hinzuzufügen. Normalerweise enthalten diese Schaltflächen nur Informationen über die bestimmten Artikel, die manuell über die PayPal-Website aus Sicherheitsgründen eingegeben werden, aber ich habe auch die Möglichkeit, die Informationen dynamisch mit PHP zu erstellen, um die richtigen Informationen zu injizieren - Das ist alles in Ordnung, aber seit Die Schaltfläche wurde nicht auf der PayPal-Website erstellt, sie enthält keine Standardverschlüsselung, die sie vor Manipulationen schützt.Automatische OpenSSL-Verschlüsselung für benutzerdefinierte PayPal-Schaltflächen? PHP

Auf der PayPal-Website beschreiben sie die Verschlüsselungsmethode, die die Verwendung von OpenSSL zum Erstellen des privaten Schlüssels, des öffentlichen Zertifikats und zum Verschlüsseln des PayPal-Schaltflächencodes umfasst. Das Erstellen der Schlüssel und Zertifikate klingt gut, aber wenn es an der Zeit ist, den Button-Code selbst zu verschlüsseln, bittet PayPal mich, einen Befehl in das heruntergeladene OpenSSL-Programm einzugeben, damit der verschlüsselte Code ausgegeben wird. Dies ist jedoch für meinen Einkaufswagen unmöglich Der Inhalt des Einkaufswagens ist dynamisch und ändert sich ständig. Daher muss ich jedes Mal, wenn jemand auf die Einkaufswagenseite zugreift, einen frisch verschlüsselten Button haben.

FRAGE: Also habe ich mich gefragt, ob ich eine PHP-Funktion wie openssl_encrypt() verwenden könnte, um den Verschlüsselungsprozess zu handhaben, anstatt sich auf manuelle Operationen zu verlassen. Ist das möglich? Ist das überhaupt sicher?

Hinweis: Die heruntergeladene OpenSSL-Software wird zusammen mit dem notwendigen Schlüssel

auf meinem Web-Server befindet

ich unter diesem Link für weitere Informationen über die kurze Verschlüsselung proccedure skizzierte durch PayPal einen kurzen Blick LEICHT empfehlen: https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/encryptedwebpayments/#id08A3I0P0MRO
Um Informationen zur Eingabe der manuellen Befehle zu erhalten, klicken Sie auf den Link und scrollen Sie nach unten zum Abschnitt "Verwenden der heruntergeladenen Software zum manuellen Verschlüsseln des Zahlungsschaltflächencodes".

PS: Dies ist mein erstes Mal mit jeder Art von Verschlüsselung zu tun oder OpenSSL

Irgendwelche Ideen?

Antwort

1

Aufgrund von Zeiteinschränkungen habe ich nur das PayPal-Dokument überflogen.

Erstens, jede Art von Verschlüsselung ohne zu wissen, was Sie tun, ist schlecht und könnte leicht zu Sicherheitsproblemen führen.

Aber schauen wir uns an, was Sie erreichen wollen und was ich "gelesen" habe.

Sie müssen Ihre öffentlichen (nicht Ihren privaten Schlüssel) hochladen und ihren öffentlichen Schlüssel (Zertifikat) herunterladen.

Der Begriff "Encrypt the payment button code" klingt falsch, da Sie wahrscheinlich nur einige Parameter verschlüsseln müssen (aber das geht für die kurze Zeit, die ich habe, zu sehr ins Detail).

Wie auch immer, dieser "Knopfcode" muss (asymetrisch) mit seinem öffentlichen Schlüssel/Zertifikat verschlüsselt sein, was bedeutet, dass nur PayPal ihn entschlüsseln kann.

Im nächsten Schritt muss dieser "verschlüsselte Tastencode" mit Ihrem privaten Schlüssel signiert werden. PayPal kann dann die Authentizität der Nachricht prüfen, da sie Ihren öffentlichen Schlüssel besitzt (und nur Sie können es unterschreiben - also bewahren Sie Ihren privaten Schlüssel auf!).

string openssl_encrypt (string $data , string $method , string $password [, int $options = 0 [, string $iv = "" ]])

oder vielleicht

int openssl_seal (string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids [, string $method = "RC4" ])

sind die Methoden, die verwendet werden können.

Alternativ könnte die openssl-Binärdatei direkt aufgerufen werden, um die Aufgabe zu erledigen.

Auf jeden Fall sollten Sie vorsichtig sein:

  • Validate alle Eingaben sorgfältig, wie Sie schädliche Daten

  • unterzeichnen könnte Wenn Sie direkt die binäre sicher sein, rufen Sie, dass Sie keine Art umsetzen wird von os command injection Schwachstelle.

+0

Ja, ich bin derzeit auf der Idee, die OpenSSL-Binärdatei zu verwenden, und scheint die beste Lösung für mich Job zu sein. Danke für die Warnmeldung der os-Befehls-Injection-Schwachstelle, halte Ausschau. (auch, ja ich meinte öffentliches Zertifikat nicht privaten Schlüssel tut mir leid) – DiscreteTomatoes

Verwandte Themen