Gästebuchscript - Funktionen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
code
datenbank
design
email
filter
filtern
funktion
inhalt
jemand
kleine vorschau
kreisen
meinung
schau
schauen
server
statement
unendliche liste
url
zahl
-
Hey Leute,
ich hab mir maln kleines Gästebuchscript erstellt, was ich gerne später auch zum Download anbieten möchte. Nun ist meine Frage, was sollte euer Meinung nach das Script können ? Ich hatte vor, noch ne Art Dashboard zu machen, aber was für Funktionen würdet Ihr euch wünschen ?
Das Gästebuch wird mittels PHP eingefügt.
guestbook::includeGuestbook();
Wie sollte ich dann das Dashboard machen ? Auch, dass man es einfach includen kann ? Was meint Ihr ? Wäre euch über Vorschläge etc sehr dankbar.
Eine kleine Vorschau gibt es hier:
Gästebuch
MFG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sieht ja ganz hübsch aus, scheint aber XSS UND SQL Injection anfällig zu sein...
Einträge mit ' irgendwo geben ein "fail!" zurück und zu XSS muss ich wohl nicht mehr sagen - schau einfach auf die Seite...
Verwende besser PDO mit prepared Statements für die Datenbank und lass sämtlichen Userinput durch htmlentities laufen. -
Oha. Was für zur Hölle ist XSS? Nenn mich bekloppt, aber ich höre den Begriff zum erstenmal. Wäre schön, wenn es mir mal jemand erklären könnte. Hab gestern Abend auf die Seite geschaut, da hast du anscheinend irgendwie einen Kreis hingezaubert. Jetzt leitet es irgendwie weiter. Ich schau mir das nochmal an. Und zu der SQL Injektion - Ich bin dabei den Code zu optimieren. ;)
Ist halt nur ne "Vorab Version" gewesen, konnte nicht wissen, dass dort gleich jemand rum zaubert. -
XSS = cross site scripting.
Dadurch das man Javascript code mitsenden kann, der dann jedes mal wieder heruntergeladen wird und ausgefürt wird können z.B. Logindaten (über sessions)... ausgelesen werden. Das geht genauso mit html und css code, obwohl das nicht so schlimm ist da nur das Design/Inhalt zerstört werden kann.
Das kannst du verhindern indem du wie orange-session schon gesagt hatt htmlentities verwendest, das den ganzen html code löscht, aber ich verwende lieber html_entity_decode da dann auch codebeispiele... nicht entfernt werden sondern nur in unschädlichen text umgewandelt werden.
Genauso ist es mit SQl. Wenn du ' schreibst (oder andere SQL Befehle) und diese auch nicht gefiltert werden, kann die ganze DB gelöscht oder kopiert werden.
-
Ich filter die Inputs nun mit htmlentities. Was XSS ist, habe ich inzwischen mitbekommen - einen Blick in die Datenbank und ich konnte es mir denken. Wird denn mit htmlentities auch * gefiltert? Wenn nicht, wie kann ich mich vor SQL Injection schützen ?
-
Bei sql ist das schon schwieriger. Du solltest schauen das wenn du z.B. eine Zahl möchtest, auch wirklich eine Zahl übergeben wird. Auserdem must du schauen das z.B. bei einem Sting keine Zeichen dabei sind um en String "abzuschlißen" (z.B. '; DROP DATABASE `datenbank`;) Du köntest dich aber auch auf mysql_real_escape_string() verlassen.
-
Wie gesagt, schau Dir wegen SQL Injection mal PDO mit prepared statements an. Das ist meiner Meinung nach die sauberste Lösung, auch wenn es auch andere funktionierende gibt.
Edit: w3j's ist eine davon, aber wesentlich komplizierter und anfälliger für Fehler. Bei prepared Statements ist SQL Injection Prinzipbedingt nicht möglich und man muss sich nicht auf irgendwelche real_escape str_replace oder sonstwas funktionen verlassen.
Desweiteren sollte man die Bedeutung von XSS NICHT herunterspielen (ändert ja nur Design/Inhalt). Ich hätte die Seite, anstatt (zu deinen Vorteil) die Eingabefelder zu deaktivieren und den schönen Kreis drüberzulegen, auch in eine Phishingseite verwandeln können. Außerdem wäre es auch möglich Exploitkits einzubinden etc.
Die Weiterleitung war übrigens @dingens Idee und ich bin auch nicht für sämtliche Verunstaltungen verantwortlich gewesen.
Desweiteren scheint aktuell irgendwas an deinem Script kaputt zu sein, das bricht in der Mitte ab, sodass der Inhalt einer Nachricht nicht mehr angezeigt wird. Außerdem solltest Du die Website auf javascript: URLs filter, die sind zwar prinzipiell nicht ganz so dramatisch, führen aber beim anklicken auch javascript im Kontext der Seite aus, was vermieden werden sollte (klicke einfach mal Test an, dann siehst Du was ich meine).
Und noch ein kleiner Tipp: die Seite mag zwar nur eine kleine Vorschau gewesen sein, aber da sie im Internet verfügbar war, interessiert das die "bösen Jungs" nicht. Man sollte also prinzipiell schauen, dass auch Testversionen, wenn sie denn öffentlich verfügbar sind, sicher sind!
Edit: und noch was: Du scheinst E-Mail Adressen mit Javascript zu filtern - Javascript lässt sich aber deaktivieren und auch sonst sind dererlei Clientseitige Überprüfungen leicht auszuhebeln, d.h. Du solltest auch noch einmal auf dem Server Website und Email auf Korrektheit überprüfen.
Beitrag zuletzt geändert: 15.9.2014 15:10:59 von orange-session -
Ich danke euch erstmal für die zahlreichen Antworten. Ich werde mir PDO mal anschauen. Wie kann ich auf javascript: URL´s filtern ? Und es liegt daran, dass er die BBCodes nicht richtig ausführt. Witeres dazu in nem anderen Thread.
Zum Glück habt ihr "nur" Designtechnisch was geändert, wofür ich euch auch dankbar bin. :D -
Kein Problem :)
Schau Dir nochmal mein 2. Edit an, das hat sich gerade überschnitten.
Zu Javascript URLs: die sehen halt so aus: javascript:code
Da wird dir schon was einfallen, um die auszuschließen, z.B. ein schönes RegEx. -
Ich überprüfe nicht mit javascript auf emailadressen. Dies ist eine Funktion von HTML mit dme type "email", da kommt dies automatisch. Gleiche habe ich eben für die URL gemacht.
-
HTML ist aber auch client seitig. Ich hab dir vor ein paar Minuten eine eindeutig ungültige email Adresse eingetragen. Man kann Post Parameter auch nachträglich mit entsprechenden addons manipulieren. Clientseitige Kontrollen sind IMMER unsicher und an sich nur für den Komfort des Benutzers da. Du musst so was daher auch immer noch einmal Server seitig kontrollieren.
-
Oh man. Ich schau mal, was sich da machen lässt. Hab ja jetzt erstmal dank dir ne gefühlte unendliche Liste. ^^
-
Hey ihr beiden. Jepp, wir hatten gestern Abend ne Menge Spaß.
cannadesign schrieb:
Da kömmt leider noch mehr dazu ;)
Oh man. Ich schau mal, was sich da machen lässt. Hab ja jetzt erstmal dank dir ne gefühlte unendliche Liste. ^^
- IP's mitzuloggen ist nach geltendem Recht in DE nicht jeder Webseite erlaubt
- Für mögliche Linksetzung kann eine Mithaftung fällig werden.
Das nervt sicherlich gerade in Foren, Gästebüchern usw. - aber wer garantiert, dass (getarnte?) Links nicht zu Seiten mit Adult- oder böswilligen Inhalten führen?
Das hat/haben der/die Verantwortliche(n) der Webseiten zeitnah zu prüfen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage