Sicherheitslücken finden (?)

11/30/2012 10:27 MrSm!th#16
Quote:
Originally Posted by nkkk View Post
hab mir den code mal angesehen und konnte keinen fehler finden, bin aber eig auch kein php programmierer.

die antisqlinjection besteht ja daraus alle ' zu entfernen, ich denke aber das reicht, da mssql nur ' als escapezeichen benutzt.

ich hab mal versucht so auf die db zuzugreifen, ist mir aber nicht gelungen, ist aber auch nicht mein spezialgebiet.
Nein, das reicht nicht.
11/30/2012 15:08 nkkk#17
Quote:
Originally Posted by MrSm!th View Post
Nein, das reicht nicht.
wieso sollte das nicht reichen?

nenn mit mal eine möglcihkeit code wie z.b.
Code:
"SELECT a From b WHERE c ='" +variable +"'";
zu injecten.
11/30/2012 16:36 kissein#18
Quote:
Originally Posted by nkkk View Post
wieso sollte das nicht reichen?
Überspitzt gesagt, wurde bisher nur das Gartentor geprüft ob es korrekt schliesst. Das Haus aber hat noch Türen/Fenster/Dach/Keller/...

Sicherheitsanalysen kosten Zeit weil bis ins Detail getestet werden muss.
11/30/2012 16:58 nkkk#19
Quote:
Originally Posted by kissein View Post
Überspitzt gesagt, wurde bisher nur das Gartentor geprüft ob es korrekt schliesst. Das Haus aber hat noch Türen/Fenster/Dach/Keller/...

Sicherheitsanalysen kosten Zeit weil bis ins Detail getestet werden muss.
ja das ist mir klar, aber mein "ich denke das reicht" bezog sich auch nur auf das gartentor.
12/01/2012 10:33 Tyrar#20
Quote:
Originally Posted by nkkk View Post
wieso sollte das nicht reichen?

nenn mit mal eine möglcihkeit code wie z.b.
Code:
"SELECT a From b WHERE c ='" +variable +"'";
zu injecten.
wie schauts mit integer werten aus? ;)

Code:
"SELECT a FROM b WHERE c = " + $_GET["id"];
wenn man 'a' irgendwo auf der seite ausgibt, wäre es einfach mit diesem query an z.b. user namen zu kommen!

Code:
test.php?id=0 UNION SELECT username FROM accounts WHERE id = 1
so in etwa, was ich jedenfalls sagen wollte, ein query wird nicht zwingend mit ' geschrieben!
12/01/2012 17:12 nkkk#21
Quote:
Originally Posted by HeavyHacker View Post
wie schauts mit integer werten aus? ;)

Code:
"SELECT a FROM b WHERE c = " + $_GET["id"];
wenn man 'a' irgendwo auf der seite ausgibt, wäre es einfach mit diesem query an z.b. user namen zu kommen!

Code:
test.php?id=0 UNION SELECT username FROM accounts WHERE id = 1
so in etwa, was ich jedenfalls sagen wollte, ein query wird nicht zwingend mit ' geschrieben!
hmm k da hast du wohl recht.
aber auch intergerwerte kann man in ' schreiben (auch wenn mein ein früherer lehrer mal gesagt hat das man dass nicht soll, ka warum, funzt sowohl bei mssql als auch mysql auch mit hochkomma soweit ich weiss)
12/01/2012 17:43 MrSm!th#22
Es gibt Möglichkeiten, das bloße Entfernen von Quotes sogar für Sqli auszunutzen. Und Escapezeichen die Quotes in der Funktionsweise ersetzen gibt es genug.

Es ist immer schlauer, eine Whitelist mit erlaubten Zeichen zu führen als eine Blacklist mit verbotenen.
12/01/2012 17:59 nkkk#23
Quote:
Originally Posted by MrSm!th View Post
Es gibt Möglichkeiten, das bloße Entfernen von Quotes sogar für Sqli auszunutzen.
das kann evtl passieren wenn man mehere komplizierte sql escape funktionen benutzt die sich seitig aushebeln, in diesem einfachen fall sicherlich nicht.
Quote:
Es ist immer schlauer, eine Whitelist mit erlaubten Zeichen zu führen als eine Blacklist mit verbotenen.
das stimmt wohl.
Quote:
Und Escapezeichen die Quotes in der Funktionsweise ersetzen gibt es genug.
nenn mir nur eins.
12/01/2012 18:48 Tyrar#24
Quote:
Originally Posted by nkkk View Post
hmm k da hast du wohl recht.
aber auch intergerwerte kann man in ' schreiben (auch wenn mein ein früherer lehrer mal gesagt hat das man dass nicht soll, ka warum, funzt sowohl bei mssql als auch mysql auch mit hochkomma soweit ich weiss)
*vorsicht halbwissen, erfahrenere user bitte korrigieren*
integer werte werden in dem fall aus der db in einen string konvertiert und dann als string abgeglichen, was sich bei massig anfragen auf die performance auswirkt!