• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie Daten sicher in eine Datenbank schreiben?

unique24

Mitglied
Hallo,

ich habe eine Javascript Kalender und die Daten demnach auch in JavaScript.

Nun muss ich aber Benutzereingaben zurück in die mysql Datenabnk schreiben.
Wie macht man das, das ein Spammer nicht meine Datenbank zumüllt?

Ich habe also ein Array in javascript:
Sende ich die Daten per ajax an ein php Script und dieses schreibt in die Datenbank, sieht man ja im Quelltext den php schreib Aufruf.

Wie also bekommt man die Daten sicher in die DB?
In der HTML eventuell php hinuzfügen?

Wäre nett wenn jemand ein Beispiel hätte.

Danke!
 
Werbung:
Danke, das geht aber nicht.

Wie machen das andere mit JS? Oder kann ich nur php dafür nutzen?
Jeder der in den Quellcode reinschaut sieht ja den write php aufruf
 
Werbung:

CORS verhindert normalerweise, dass irgendjemand von irgendeiner URL Dein Server-Seitiges Script benutzen soll. Wenn der Webserver richtig konfiguriert ist und du es nicht explizit abgeschaltet hast.

Wenn du Angst hast, dass irgendjemand Dir Unsinn via Deine Webseite in die DB schreibt, da wird es keine andere Option geben als einen Login oder ein manuelles Prüfen der Daten. Oder du prüfst die Daten auf Plausabilität.
 
Hallo nochmal,

habs mir nun angesehen ... das mit dem Login per php ist doch möglich .. aber wenn ein user eingeloggt ist, würde er den query doch wieder sehen.

Ich müsste das schreiben in den PHP Code legen .. aber die Übergabe an den PHP code sollte nicht gesehen werden oder nur durch die Seite selbst möglich sein.

Das Frontend ist HTML, gezeichnet wird der Kalender in JavaScript.

Danke!
 

CORS verhindert normalerweise, dass irgendjemand von irgendeiner URL Dein Server-Seitiges Script benutzen soll. Wenn der Webserver richtig konfiguriert ist und du es nicht explizit abgeschaltet hast.

Wenn du Angst hast, dass irgendjemand Dir Unsinn via Deine Webseite in die DB schreibt, da wird es keine andere Option geben als einen Login oder ein manuelles Prüfen der Daten. Oder du prüfst die Daten auf Plausabilität.
Oh danke .. werd mich einlesen!
 
Werbung:
Ich kenen Deinen Code nicht, aber wenn du in JavaScript ein SQL zusammenstellst (was ich irgendwie herauslese), dass du dann mit PHP schreibst, das solltest du auf keinen Fall machen.
 
Nein, ich habe in JavaScript ein Array das ich zurück in die DB schreiben muss.

Selbst wenn ich eine write.php aufrufe und per GET oder POST die Daten als JSON übergebe, sieht man im javascript ja die URL und Aufruf
 
Wie immer gibt es 1000 verschiedene Wege, die zum Ziel führen. Hier mal einer ein wenig ausgeführt:

Wie macht man das, das ein Spammer nicht meine Datenbank zumüllt?
So etwas wirst du nicht wirklich verhindern können. Falls es für deinen Anwendungsfall passt, kann man natürlich etwas wie reCaptcha v3 einführen. In der neuesten Version muss der User nämlich keine "Bildchen" anklicken, stattdessen wird das Verhalten auf der Website analysiert und anhand dessen ein Schätzwert abgegeben, ob es sich hierbei um einen Bot oder User handelt. Ein Login wird keine wirkliche Hürde sein.

Vor jedem schreiben in die Datenbank müsstest du dann das reCaptcha prüfen. Sprich: Du solltest dir dann einen Proxy-Server aufsetzen, natürlich mit richtiger CORS-Konfiguration ;) (aber das solltest du ohnehin tun, wenn du mit Datenbanken arbeitest).

Wie also bekommt man die Daten sicher in die DB?
POST wäre eine Möglichkeit, aber eigentlich solltest du beim Schreiben in eine Datenbank einen PUT-Request schicken. Und ganz, ganz, ganz wichtig: Schau unbedingt, wie du SQL-Injection-Attacken verhinderst! Normalerweise würde man einfach ORM-packages benutzen, die das automatisch für dich machen. Falls du dir das noch nicht zutraust, benutze mindestens Prepared Statements und parametrisierte Queries!

Selbst wenn ich eine write.php aufrufe und per GET oder POST die Daten als JSON übergebe, sieht man im javascript ja die URL und Aufruf
Ich verstehe nicht, inwiefern das ein Problem ist. Das kann doch nur der Client, also Absender sehen und verschlüsselt ist das ganze eh durch HTTPS (sofern du ein SSL-Zertifikat hast und du solltest dich drum kümmern, dass du eins hast!).
 
Zuletzt bearbeitet:
Werbung:
Was du da versuchst, nennt sich auch REST API mit Authentifizierung. Es gibt hier mehrere Möglichkeiten - je nachdem, für wen die Anwendung nutzbar sein soll.

Authentifizierung bedeutet im Grunde nur, dass dein Benutzer seine Identität nachweist. Das kann erfolgen, in dem er einen Benutzernamen und ein Passwort angibt und du somit eindeutig weißt, wer da grade deine Seite aufruft. Solange es keine Authentifizierung gab, könnte es jeder sein.

Wenn du jetzt Angst hast, dass jemand ein Script schreibt, welches dir die Datenbank zumüllt, musst du zusätzlich sicher stellen, dass es sich um einen Menschen und nicht um ein Programm handelt. Das geht zum Beispiel mit einem Captcha (ein Test, den nur ein Mensch lösen kann - z.B. ein Bild mit verschleierten Buchstaben, welches von Programmen nicht erkannt werden kann). Google Recaptcha ist eine Möglichkeit, es über einen externen Anbieter zu integrieren.

Benötigt deine Seite nur den "Ich bin ein Mensch" Nachweis, könntest du in regelmäßigen Abständen ein Captcha anzeigen.

Zusätzlich könntest du auch noch Rate-Limiting implementieren (sprich: Nur 10 API aufrufe pro Minute oder sowas). Das halte ich in deinem Fall aber nicht für nötig.
 
Nein, ich habe in JavaScript ein Array das ich zurück in die DB schreiben muss.

Selbst wenn ich eine write.php aufrufe und per GET oder POST die Daten als JSON übergebe, sieht man im javascript ja die URL und Aufruf
Übergib dein JS-Array an PHP und mach da deine Datenbank Aktionen.
oder
 
Zurück
Oben