Hallo,
ich habe eine wohl ziemlich doofe Frage.
Man hat mir vor einiger Zeit (2+ Jahre) mal ein Script erstellt, mit welchem die Zahlungsabwicklung mit einem Zahlungsprovider stattfindet. Das funktioniert auch problemlos und ist wohl auch gegen Manipulation geschützt.
Derzeit arbeite ich an dieser Website und stelle mir die Frage, wie dieses Script eigentlich funktioniert. Und ich komme nicht dahinter. Alles, was nicht selbst gemacht, für mich Dummerchen oft nicht nachvollziehbar...
Es wird also eine URL mit Parametern vom Benutzer aufgerufen, welche den Zahlungsprozess einleitet. Der Zahlungsprovider greift dann auf eine Datei zu, welche in meine Datenbank die entsprechenden Werte einträgt, z. B. den Artikelnamen, den Betrag und einen Authkey.
Für den Zahlungsprovider ist die Zahlung somit abgeschlossen, mein Script führt nun die weitere Bearbeitung der Bestellung durch. Bevor dies geschieht, hat mein Programmierer jedoch eine weitere Prüfung eingebaut, die verhindert, dass man z. B. beim Bezahlvorgang mittels veränderter Parameter bzw. Werte einen geringeren Betrag auswählen kann.
Das funktioniert auch, testen kann ich das insbesondere wenn ich den Zahlungsvorgang z. B. auf sofort.com abbreche und auf meine Seite zurückgeleitet werde. Mein Script speichert im Log mit der Abbruchmeldung den "echten, wahren Betrag" und den in der Zahlung verwendeten (ggf. manipulierten) Betrag.
Für diese Prüfung, die nach der erfolgten Zahlung unmittelbar vor der Freischaltung der Bestellung meinerseits stattfindet, hat man folgendes Szenario verwendet:
$betrag = $_GET['amount'] - also wohl das, was vorher vom User per Klick auf den Button per GET-Parameter an den Paymentprovider übermittelt wurde und nach dessen Zahlungsbestätigung wieder an mein Script zurückgesendet wird - und somit einen manipulierten Betrag enthalten könnte
$_SESSION['betrag'] - welches wohl den echten Betrag enthält und zur Gegenprüfung vor der Freischaltung der Bestellung verwendet wird. Leider kenne ich mich mit PHP sessions nicht aus und finde in allen mit diesem Script im Zusammenhang stehenden Dateien / Prozessen keinen Hinweis, wo bzw. wie diese Variable gefüllt wird bzw. herkommt.
Ich habe keine Zweifel an der Sicherheit dieses Scriptes, möchte aber gerne vor allem wissen, wo das "session betrag" herkommt. Vielleicht hat jemand eine Idee.
Danke
ich habe eine wohl ziemlich doofe Frage.
Man hat mir vor einiger Zeit (2+ Jahre) mal ein Script erstellt, mit welchem die Zahlungsabwicklung mit einem Zahlungsprovider stattfindet. Das funktioniert auch problemlos und ist wohl auch gegen Manipulation geschützt.
Derzeit arbeite ich an dieser Website und stelle mir die Frage, wie dieses Script eigentlich funktioniert. Und ich komme nicht dahinter. Alles, was nicht selbst gemacht, für mich Dummerchen oft nicht nachvollziehbar...
Es wird also eine URL mit Parametern vom Benutzer aufgerufen, welche den Zahlungsprozess einleitet. Der Zahlungsprovider greift dann auf eine Datei zu, welche in meine Datenbank die entsprechenden Werte einträgt, z. B. den Artikelnamen, den Betrag und einen Authkey.
Für den Zahlungsprovider ist die Zahlung somit abgeschlossen, mein Script führt nun die weitere Bearbeitung der Bestellung durch. Bevor dies geschieht, hat mein Programmierer jedoch eine weitere Prüfung eingebaut, die verhindert, dass man z. B. beim Bezahlvorgang mittels veränderter Parameter bzw. Werte einen geringeren Betrag auswählen kann.
Das funktioniert auch, testen kann ich das insbesondere wenn ich den Zahlungsvorgang z. B. auf sofort.com abbreche und auf meine Seite zurückgeleitet werde. Mein Script speichert im Log mit der Abbruchmeldung den "echten, wahren Betrag" und den in der Zahlung verwendeten (ggf. manipulierten) Betrag.
Für diese Prüfung, die nach der erfolgten Zahlung unmittelbar vor der Freischaltung der Bestellung meinerseits stattfindet, hat man folgendes Szenario verwendet:
$betrag = $_GET['amount'] - also wohl das, was vorher vom User per Klick auf den Button per GET-Parameter an den Paymentprovider übermittelt wurde und nach dessen Zahlungsbestätigung wieder an mein Script zurückgesendet wird - und somit einen manipulierten Betrag enthalten könnte
$_SESSION['betrag'] - welches wohl den echten Betrag enthält und zur Gegenprüfung vor der Freischaltung der Bestellung verwendet wird. Leider kenne ich mich mit PHP sessions nicht aus und finde in allen mit diesem Script im Zusammenhang stehenden Dateien / Prozessen keinen Hinweis, wo bzw. wie diese Variable gefüllt wird bzw. herkommt.
PHP:
if ( [...] AND $betrag == $_SESSION['betrag'] AND [...] ) {
# successful
} else {
# irgendwas stimmt nicht, Kunden kontaktieren und zur Sau machen :-P
}
Ich habe keine Zweifel an der Sicherheit dieses Scriptes, möchte aber gerne vor allem wissen, wo das "session betrag" herkommt. Vielleicht hat jemand eine Idee.
Danke