Forum
Öffentliche Foren |
FORUM: Spiele & Computer THEMA: JS SQL-Injection / XSS | |
AUTOR | BEITRAG |
thies
RANG Deckschrubber |
#1 - 10.09 09:16 Welch tolles Thema ich weiss...Nun habe ich eine Website mit einem Formular und einem Freitextfeld. Die Daten aus dem Forumlar werden dann in eine Datenbank geschrieben. nun ist es aber so, das schon ein einfaches ? oder ein einfaches " die Daten nichtmehr in die Datenbank schriebt. Ursache ist sicherlich, das sowas nicht abgefangen wird. nun habe ich mich 2 Tage im Internet durchgewühlt und sowas gefunden: http://ha.ckers.org/xss.html http://quickwired.com/smallprojects/php_xss_filter_function.php Und dachte mir, das ich damit alles prima hinbekommen würde. Leider ist dem nicht so. Das im letzten Link gezeigte js-Beispiel funzt bei mir nicht. Auch ist das gezeigte js laut www.jslint.com nicht wirklich verarbeitbar. Auf der Seite funktioniert es aber. Ich sitze weiter vor dem Problem das ich keine " und ? abfange und meine Nutzer keine Daten/Texte eintragen können, welche diese Zeichen beinhalten. Was also tun? [b]Könnt ihr mir helfen?[/b] Ich habe leider nur noch bis zum Ende der Woche Zeit. Es muss doch möglich sein zumindest diese Sonderzeichen " ? abzufangen und ordentlich in die Datenbank zu schirbeen, sowie beim auslesen für die Anzeige wieder zurückzuwandeln. In diesem Fall steht also die SQL-Injection erstmal im Vordergrund, damit die Leute wenigstens alles eintragen können. Ich bin für jede Hilfe sehr dankbar. Schönen Gruß thies |
vaest´ark // patrick *ich bin hier nicht der depp*
RANG Master of Clanintern |
#2 - 10.09 10:26 Welche Sprache? PHP?Falls ja: http://www.php.net/mysql_real_escape_string http://www.php.net/addslashes http://www.php.net/stripslashes http://www.php.net/htmlentities oder http://www.php.net/htmlspecialchars |
thies
RANG Deckschrubber |
#3 - 10.09 11:42 Da es eine Sybase und keine mysql datenbank ist fällt erstes schonmal raus.Und da steht nicht umsonst js davor. ;-) Die daten aus dem HTML-Formular sollen bei onsubmit in einer JS überprüft werden und notfalls verändert werden (was auch schon passiert, aber eben nur mit standard-werten udn nicht mit sonderzeichen. In PHP werden die Daten dann zu einem SQL-zusammengewurfen. |
k-to-the-laus(topher)
RANG Lord of Luck |
#4 - 10.09 15:54 Die Überprüfung ins SQL auszulagern is schön und gut, aber sicher is das nicht wirklich. Jeder, der einigermaßen JS kann, kann eine solche Überprüfung umgehen.Alles was nicht auf dem Server ausgeführt wird, kann vom Benutzer umgangen werden. Also: Werte modifizieren und überprüfen nur aufm Server, sonst kannst du es gleich lassen. |
thies
RANG Deckschrubber |
#5 - 11.09 04:34 hmmm und wie?Wenn ich addslashes in php nutze, dann macht meine javascript mucken. Weil es eben aufgrund des eingegebenen Textes feststellt, das die eine nicht abgeschlossene Zeichenfolge ist, wenn ich den value des Feldes abfrage. Daher muss ich das sowieso in Javascript irgendwie Filtern. Das es im Prinzip nur darauf geht in das Freitextfeld Zeichen wie " udn ? eingeben zu können, kann es durchaus in javascript geschehen, die Webapplikation ist ansonsten in einer geschützen Umgebung (Intranet) und von daher, nicht starken Angriffen ausgesetzt) |
vaest´ark // patrick *ich bin hier nicht der depp*
RANG Master of Clanintern |
#6 - 11.09 06:43 Hä?Du wendest addslashes(); kurz vor dem Schreiben in die DB an. Direkt nach dem Auslesen, aber vor der Darstellung, wendest du stripslashes(); an. Das entfernt die in der DB abgelegten überflüssigen \ wieder. Ansonsten: http://www.php.net/str_replace |
thies
RANG Deckschrubber |
#7 - 11.09 07:50 hmmm ich glaube das problem hat sich grade verlagert.erstmal den neuen fehlergeber suchen. ach so eine ordentliche javascript-konsole wäre was tolles, aber nein, hier gibt es sowas nicht. *über quelltext grübel* |
aaf
RANG Lord of Clanintern |
#8 - 11.09 09:17 gibts...http://getfirebug.com/ |
thies
RANG Deckschrubber |
#9 - 11.09 09:28 ich darf nichts installierenich habe hier einen ie6 und ultraedit32 |
aaf
RANG Lord of Clanintern |
#10 - 11.09 09:30 juhu. debugging jeder art im ie suckt...dann lass dir vom admin wenigstens die ms ie dev bar installieren. oder halt gleich den ff mit firebug. so kann doch keiner arbeiten... |
inta
RANG Master of Clanintern |
#11 - 11.09 10:09 Da brauchste nichts installieren:http://portableapps.com/apps/internet/firefox_portable Mit Add-ons sollte das Ding auch gehen, kannste nach gebrauch einfach wieder löschen. |
thies
RANG Deckschrubber |
#12 - 11.09 11:26 auch der portable ff funzt nicht. ich würde zwar eh opera beavorzugen, aber auch der ist nicht funktionabel. (also starten geht, aber ich komme aufgrund des rechtmanagements nicht in die proxyumgebung)miese arbeitsumgebung eben. aber das Problem hat sich mittlerweile gelöst. Ich habe dann doch in irgendnem forum dank meiner Suchmaschine die Lösung gefunden. bin ich froh, das ich das weg habe. von daher kanns geschlossen werden. |
inta
RANG Master of Clanintern |
#13 - 11.09 11:54 Wie wärs mit der Lösung für andere die auf den Thread hier treffen? |
thies
RANG Deckschrubber |
#14 - 11.09 12:34 Gern, aber ich glaube die wird kaum helfen.Das ursprüngliche Problem konnte ich mit $l_desc = quotemeta_deep($l_desc); und function quotemeta_deep($value) { $value = quotemeta($value); return $value; } sowie function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $search = stripslashes_deep($search); lösen. Wobei $search ein Array ist und $l_desc "nur" ein String. Das zwischenzeitlich aufgetretene Problem in Javascript konnte mit: {popup autostatus=true text=$row.e_text_long|escape:"quotes"|escape:"htmlall"} gelöst werden. Wobei hier auf die escape-Varianten geachtet werden muss. Wem die komische Syntax aufstösst, so soll gesagt werden das smarty als Template-Engine inclusive dem overlib-plugin seine Finger im Spiel hat. |
‹• ⊂⌈α⊂κ¥ •›
RANG Deckschrubber |
#15 - 17.09 06:12 benutz doch einfach die mysql funktion "mysql_real_escape_quotes".damit ist ein xss bzw. sql injection nicht mehr möglich. |
thies
RANG Deckschrubber |
#16 - 17.09 06:25 Wie ich shcon erwähnt ist es keine mysql-Datenbank.Die wird auch nicht überall eingesetzt, aber das Problem ist ja schon gelöst. |