Autor Beitrag
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.12.09 21:43 
Hallo,

für ein Projekt möchte ich Daten über ein PHP-Script in eine Datenbank laden, dazu möchte ich die Daten an das Script POSTen, wo sie weiterverarbeitet und in die mySQL-DB gespeichert werden. Die Frage die sich mir aufdrängt, ist, wie kann ich verfizieren, dass die gesendeten Daten auch garantiert von meinem Programm kommen und nicht von irgendeinem fiesen Fiesling? Ich meine, Passwortmitschicken genügt ja wohl nicht, oder, ich nehme an, man kann das einfach abfangen und nachlesen, oder?

Bin auf Tipps gespannt!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 27.12.09 21:58 
Wirklich sicher sein kannst du nie. Denn egal was dein Programm macht, man kann es nachbauen indem man dein Programm disassembliert und analysiert.

Du kannst aber z.B. durch nach bestimmten Algorithmen gebildete Werte es zumindest erschweren. Zum Beispiel indem du Werte vom Server bekommst und dann daraus bestimmte bilden musst. In der Session werden die gespeichert und wenn die Antwort nicht passt, verwirfst du die Anfrage.

Je nach Aufwand, den du betreiben willst, gibt es auch digitale Signaturen und entsprechende fertige Algorithmen.
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.12.09 22:23 
also zum Beispiel eine solche Verwurstung:

Ich schicke eine Anfrage, kriege eine Zahl und eine SID, verwurste die Zahl irgendwie, beispielsweise mit dem Datum und dem Anfangsbuchstaben des Monats in ASCII * 2, der Server macht das gleiche, speichert das natürlich zwischen und ich schicke das nochmal hin und kriege dann erlaubnis, schicke dann die Daten und die werden bearbeitet und die Session erlischt.

€: bitte um bestätigung ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 27.12.09 23:04 
Richtig, du brauchst zwei Anfragen, einmal die um die zu berechnenden Daten zu bekommen und die Session zu eröffnen und die zweite um die Antwort und die Daten zu schicken. Das kannst du ja auf einmal machen, dann reichen diese beiden Anfragen.

Ich rate dazu einen Zufallsfaktor einzubauen. Das heißt, dass ein bestimmter Wertebereich zurückkommen muss, ggf. auch in mehreren Werten. Denn so erschwerst du die Erkennung des Musters erheblich, wenn jemand nur die Daten snifft.
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.12.09 23:09 
werde ich machen, danke!
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 28.12.09 12:06 
und BTW: Verzichte bitte auf Dialogfelder der Art "Sicherheitsschlüssel stimmt nicht"
Das ist zu leicht für Cracker ;-)
Sorge dafür, dass der Schlüssel immer stimmt in deinem Programm (also der Algo fehlerfrei ist) und starte zur Not eine 2. Anfrage nach der gleichen Art ohne Mitteilung an den User.
Wenn es 2mal hintereinander nicht geht-->IP Block fü ein paar Minuten
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 28.12.09 12:36 
Beim eigenen Programm wird es das Problem ja ohnehin nicht geben. Und wenn jemand das Skript falsch aufruft, kann man ja einfach eine leere Seite oder "500 - internal server error" oder "Beeinträchtigung durch Wartungsarbeiten" :mrgreen: oder so zurückgeben.
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 28.12.09 22:54 
ich gebe einfach nichts zurück und gehe Clientseitg davon aus, dass das Programm richtig vorgeht und die Session Valide ist. So wird nichts zurückgesendet und alles ist in Butter. Ärgerlich natürlich, wenn der Server mitten in der Verifikation @BenBE: mal wieder stirbt.