Clanintern Clanintern Clanintern

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 installieren

ich 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.