Hakuna matata!
Jup, dass war es. Genau ins Schwarze! Danke!
Stammt der Vogelstrauß direkt vom T-Rex ab? Wie auch immer, hier oben mit dem Kopf über dem Sand, ist es nicht so schwarz.
Deine Daten gehören URL-kodiert, nicht base64-kodiert. Kodierungen sind da um technische Randbedingungen bei der Informationsübertragung zu bewätigen, sie sind nicht dafür da, um Kummunikationskanäle vor unbefugten Eingriffen zu schützen. Das ist Aufgabe der Kryptographie.
Der Morsecode ist zum Beispiel eine einfache Kodierung. Morsecodes werden in der Seefahrt eingesetzt, wo es häufig keine Kabel- oder Funkverbindungen gibt. Aber jeder, der den Morsecode kennt, kann Nachrichten mitlesen und auch selber versenden.
UTF8 ist eine Kodierung, damit wird der Unicode-Zeichensatz auf Binärdaten abgebildet. Natürlich kann jeder, der UTF8 versteht solche Binärdaten auch wieder zum ursprünglichen Text umwandeln. Dieser Vorgang nennt sich Dekodierung.
Mit Base64 bildet man Binärdaten auf ein 64-Zeichen-umfassendes Alphabet ab. Und auch hier kann jeder, der Base64 kennt, ohne Audwand auf die ursprünglichen Daten schließen und seine eigenen Base64-Nachrichten verfassen.
Die URL-Kodierung bildet Zeichen, die in einem URL eine eigene Rolle spielen, auf harmlose Escape-Sequenzen ab, damit diese den URL nicht ungewollt verfremden. Das sind also die Sonderzeichen, dazu gehört zum Beispiel das Leerzeichen, welches auf die Zeichenfolge %20 abgebildet wird. Dazu gehört auch der Schrägstrich, welcher auf %2F abgebildet wird. Der Schrägstrich kommt übrigens auch im Base64-Alphabet vor und allein das ist ein guter Grund, warum du die Daten url-kodieren solltest.
Für dein Problem ist Base64 jedenfalls das falsche Werkzeug. Du möchtest, dass deine Logs mit den tatsächlichen Bestellungen übereinstimmen, bei deinem Problem geht es also um die Integrität von Daten.
Im einfachsten Fall greift man so ein Problem an der Wurzel und man sorgt dafür, dass erst gar keine Integritätsverletzungen auftreten können. Dies könntest du zum Beispiel machen, indem du die Daten dann logst, wenn die Bestellung auch tatsächlich abgesendet wird und nicht irgendwann später.
Falls das keine Option ist, was ich mir nur sehr schwer vorstellen kann, dann kannst du auf eine Prüfsumme zurückgreifen. Du kannst bei der Bestellung eine Prüfsumme erstellen und zwischenspeichern, wenn dann später die Daten für das Logging kommen kannst du abermals die Prüfsumme bilden und mit der vorherigen Prüfsumme vergleichen. Stimmen sie nicht, dann sind die Daten offenbar verfremdet worden.
Du könntest die Bestell-Parameter auch vor dem Logging mit einer digitalen Signatur versehen, um dich deren Echtheit zu vergewissern.
Es gibt viele Lösungsansätze, aber Base64 ist mit Sicherheit keine. Was in deinem Fall am besten ist, können wir immernoch nicht diskutieren, weil die Informationen noch zu spärlich sind.
“All right, then, I'll go to hell.” – Huck Finn