Hallo zusammen,
ich beschäftige mich seit ca. einem halben Jahr in meiner Freizeit mit PHP. Ich kann zurzeit in einer Textarea einen Text eingeben (inkl. WYSIWYG) Editor. Dieser Text wird in einer DB gespeichert und soll dann wieder ausgegeben werden. Dies funktioniert auch sehr gut, jedoch habe ich Probleme mit bestimmten Zeichen... und es sollte natürlich auch sicher sein. Ich übergebe den Text über Post und Frage ihn folgendermaßen ab:
Ich behandle meine String nicht mit mysqli_real_escape_string oder ähnlichem da dies ja bei prepared statements nicht nötig ist... wie ich gelesen habe.
Mein Text den ich Speichere ink. SQL injection Test:
in der Datenbank steht nun folgendes:
Jetzt kommen wir zur Ausgabe, ich habe in meinen Unterlagen, Büchern immer wieder gelesen das Texte die dem User angezeigt werden immer mit htmlspecialchars() behandelt werden müssen. (Egal woher zum Beispiel über post oder aus einer DB) Dies habe ich auch gemacht jedoch bekomme ich dann:
wenn ich htmlspecialchars() ignoriere und es einfach mit echo ausgebe ist mein Text wie gewünscht und der SQL injection Test wird auch nicht ausgeführt... also eigentlich richtig... Bin nur verunsichert das ich überall lese das ausgaben mit htmlspecialchars behandelt werden sollen.
Ich habe auch schon gedacht dass ich eventuell die Zeichen bevor ich Sie in in die Datenbank gebe mit FILTER_SANITIZE_SPECIAL_CHARS
bearbeite aber dann bekomme ich in der Datebank diesen Text
bei der Ausgabe von diesem Eintrag aus meiner Datenbank bekomme ich weder mit htmlspecialchars noch ohne ein richtiges Ergebnis.
Ich hoffe ich konnte mich deutlich ausdrücken und bedanke mich schon mal in voraus für die Mühe.
ich beschäftige mich seit ca. einem halben Jahr in meiner Freizeit mit PHP. Ich kann zurzeit in einer Textarea einen Text eingeben (inkl. WYSIWYG) Editor. Dieser Text wird in einer DB gespeichert und soll dann wieder ausgegeben werden. Dies funktioniert auch sehr gut, jedoch habe ich Probleme mit bestimmten Zeichen... und es sollte natürlich auch sicher sein. Ich übergebe den Text über Post und Frage ihn folgendermaßen ab:
PHP-Code:
$faq_errordescription = filter_input(INPUT_POST, "faq_errordescription",FILTER_UNSAFE_RAW);
if ($insert_stmt = $mysqli->prepare("INSERT INTO faq (faq_errordescription)VALUES (?)"))
{
$insert_stmt->bind_param('s', $faq_errordescription);
$insert_stmt->execute();
}
Mein Text den ich Speichere ink. SQL injection Test:
Test Fett und unterstrichen Test kursiv Farbig SQL in. Test: <script type="text/javascript">alert("XSS");</script> TEST ENDE
Test <b>Fett </b>und <u>unterstrichen </u>Test kursiv <font color="#cc3300">Farbig SQL in. Test:</font> <script type="text/javascript">alert("XSS");</script> TEST ENDE
Test <b>Fett </b>und <u>unterstrichen </u>Test kursiv <font color="#cc3300">Farbig SQL in. Test:</font> <script type="text/javascript">alert("XSS");</script> TEST ENDE
Ich habe auch schon gedacht dass ich eventuell die Zeichen bevor ich Sie in in die Datenbank gebe mit FILTER_SANITIZE_SPECIAL_CHARS
PHP-Code:
filter_input(INPUT_POST, "faq_reason", FILTER_SANITIZE_SPECIAL_CHARS);
Test <b>Fett </b>und <u>unterstrichen </u>Test kursiv <font color="#cc3300">Farbig SQL in. Test:</font>&nbsp;&lt;script type="text/javascript"&gt;alert("XSS"
;&lt;/script&gt; TEST ENDE
Ich hoffe ich konnte mich deutlich ausdrücken und bedanke mich schon mal in voraus für die Mühe.

Kommentar