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

Frage XSS unterbinden aber html belassen

jappi00

Mitglied
Hallo ich hätte da noch eine Frage,

ich habe einen WYSIWYG Editor ebtwickelt,
diese Daten werden in einer DB gespeichert:
PHP:
$stmt = $db->prepare("INSERT INTO Events (ID, `date`, title, body, footer, owner) VALUES (?, ? , ? , ? , ? , ?)");
                                $stmt->bind_param("ssssss", $id, $date, $title, $body, $footer, $owner);
                                $id = "NULL";
                                $date = $_POST['date'];
                                $title = $_POST['title'];
                                $body = $_POST['body'];
                                $footer = $_POST['footer'];
                                $owner = "------";
                                $stmt->execute();
Und an anderer Stelle wieder ausgegeben. Allerdings mache ich mir Sorgen um ein mögliches XSS und somit ein ausnutzen des Editors. Das Problem bei gängigen Lösungen wie strip_tags(); oder htmlspecialchars(): ist das diese auch den Html Code wie zum Beispiel <b></b> unnutz machen. Das alleinige Filtern nach <script> Tags scheint sehr unsicher.

Ich hoffe jemand kann mir helfen!

Mit freundlichen Grüßen,
Jappi00
 
Zuletzt bearbeitet:
Werbung:
Benutzt du htmlspecialchars() bevor du die Daten in deiner Datenbank ablegst, oder bei der Ausgabe?
 
Ich hatte es erst bei der Eingabe probiert, hat leider nicht funktioniert... Aktuell verwende ich die Funktion garnicht da vorrerst nur bestimmte Leute Zugriff darauf haben.
 
Werbung:
Werbung:
Wie erwartet funktioniert beides nicht mein provisorisches alert('XSS') wird zwar nicht ausgeführt, aber die html text werden immer noch in Klartext angezeigt:( Hat jemand noch eine Idee? Danke schonmal

beim speichern:
PHP:
$body = htmlspecialchars($_POST['body']);
beim ausgeben:
PHP:
$row["body"] = htmlspecialchars($row['body']);
 
Eigentlich stellt sich mir ja die Frage, warum du überhaupt einen WYSIWYG-Editor programmierst, wo es doch so ausgereifte Dinge wie TinyMCE oder CKEditor gibt.
Ich denke, dir bleibt nichts anderes übrig, als alle nicht erwünschten Tags zu ersetzen
 
Natürlich gibt es diese, aber sie verfügen zum einen nicht über ein php script das xss vorbeugt und zum anderen passen die Lizenzen nicht zu meinem Projekt, mir geht es viel mehr darum mit PHP eine sicheren Weg zu finden wie man auch allgemein javaxript entfernt und html belässt. Es kann ja nicht sein das ich der einzige bin der ein solches Problem hat, hier im Forum klappt es ja auch und ich kann keinen js Code einbinden. Vielen Dank trotzdem :)
 
Werbung:
Ich versuche es nochmal an einem simplen Beispiel zu erklären:
Ich habe zwei Strings, dient nur zur verdeutlichung:
PHP:
$xss = "<script>alert('XSS');</script>";
$html= "<b>TEST</b>";
nun möchte ich das der alert nicht ausgegeben wird dazu wende ich
PHP:
echo htmlspecialchars($xss . $html);
an, erhalten tu ich genau diese Ausgabe:
Code:
<script>alert('XSS');</script><b>TEST</b>
Das problem ist das die HTML Tags erhalten bleiben sollen.
Ich hoffe jetzt ist es verständlicher :p

Mit freundlichen Grüßen,
Jappi00
 
Ja natürlich, aber es gibt ja wesentlich mehr Möglichkeiten js einzuschleusen z.b. über css oder über onLoad(); oder stehe ich grade auf dem Schlauch?
 
Werbung:
Danke euch allen, die Lösung lag praktisch vor meinen Augen! Sie liegt in dem Frame in welchem ich grade Tippe! ich greife einfach auf den BBCode Syntax zurück und kann mich so mit den üblichen PHP Methoden vor XSS schützen.

Danke für eure Mühen,
Jan-Phillip Oesterling
 
Zuletzt bearbeitet:
Danke euch allen, die Lösung lag praktisch vor meinen Augen! Sie liegt in dem Frame in welchem ich grade Tippe! ich greife einfach auf den BBCode Syntax zurück und kann mich so mit den üblichen PHP Methoden vor XSS schützen.
.....
Bitte wie?
Es gibt keine PHP-Methoden zum Schutz vor XSS, könntest du deine Lösung bitte etwas genauer beschreiben?
 
Werbung:
Werbung:
Zurück
Oben