TimWolla
Community Team
Tuesday, July 13th 2010, 9:56pm
|
|
MySQL queries |
1 2 3 4 5 6 7 8 |
CREATE TABLE users ( userID int(10) unsigned NOT NULL AUTO_INCREMENT, username varchar(255) NOT NULL, password varchar(255) NOT NULL, admin tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (userID), UNIQUE KEY username (username) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
|
|
PHP Source code |
1 |
$sql = "INSERT INTO users (username, password, admin) VALUES ('".$_POST['username']."', '".$_POST['password']."', 0)";
|
|
|
Source code |
1 2 3 4 |
Array ( [username] => TimWolla [password] => MeinSuperPasswort ) |
|
|
MySQL queries |
1 |
INSERT INTO users (username, password, admin) VALUES ('TimWolla', 'MeinSuperPasswort', 0) |
|
|
Source code |
1 2 3 4 |
Array (
[username] => NeuerAdmin', 'MeinSuperPasswort', 1), ('TimWolla
[password] => MeinSuperPasswort
)
|
|
|
MySQL queries |
1 |
INSERT INTO users (username, password, admin) VALUES ('NeuerAdmin', 'MeinSuperPasswort', 1), ('TimWolla', 'MeinSuperPasswort', 0) |
|
|
PHP Source code |
1 |
$sql = "INSERT INTO users (username, password, admin) VALUES ('".escapeString($_POST['username'])."', '".sha1($_POST['password'])."', 0)";
|
|
|
MySQL queries |
1 |
INSERT INTO users (username, password, admin) VALUES ('NeuerAdmin\', \'MeinSuperPasswort\', 1), (\'TimWolla', '5400cb1aa89d4752abbde24613cde8a5d8c86173', 0) |
Categories: Plugins, Programmierung, Sicherheit
By AndreasD. (Friday, July 30th 2010, 11:12pm)
ich denke d0nut wollte das schon sagen, aber der hinweis sollte noch ganz fett hinein: wenn escapeString (oder die mySQL funktionen von php dafür) verwendet werden, unbedingt den string auch in anführungszeichen setzen. escapeString sichert im prinzip nur soweit ab, dass der zurückgegebene string nicht die umgebenden anführungszeichen "stören" kann - wenn die aber fehlen, kann man damit wild herumspielen. aus "foo, bar" wird auch bei escapeString nichts gegen das komma oder das leerzeichen unternommen.
wichtiger als den hinweis, dass man die beiden funktionen verwenden soll, fände ich noch, wenn man auch erwähnt dass man ein klares konzept braucht _wo_ man sie einbaut. direkt im sql string, bereits innerhalb von read Methoden, usw. - alles hat vor/nachteile - jedem das seine, aber man sollte wissen wo man es macht
damit man nicht einmal darauf vergisst.
mfg,
andreas
By d0nut (Saturday, July 17th 2010, 10:15am)
Nochmal der Hinweis: escapeString schützt nicht bei Zahlen.
Beispiel bei dem eine SQL Injection möglich ist:
$sql = "SELECT * FROM category WHERE id = ".escapeString($id);
Mehr auch in einer Präsentation von mir zu SQL Injections: http://www.easy-coding.de/praesentation-…king-t6638.html
By 8inLine (Friday, July 16th 2010, 9:44pm)
Uff, bei sowas krieg ich immer etwas Kopfschmerzen, deshalb danke das du es so gut dargestellt hast. Das machte die Sache etwas einfacher.
----------------------------
Wer sich über die Wirklichkeit nicht hinauswagt, der wird nie die Wahrheit erobern. — Schiller
Mein Blog: http://www.usbmemorysticks.net/ironkey-flash-drives
By kurtextrem (Wednesday, July 14th 2010, 11:57am)
Verdammt, du hast mein PW Public gemacht!
Ne, spaß, toller Blog Eintrag, gefällt mir gut 
Tuesday, July 13th 2010, 9:56pm
By TimWolla (Jul 31st 2010, 6:15pm)
By AndreasD. (Jul 30th 2010, 11:12pm)
By Alexander Ebert (Jul 20th 2010, 1:18pm)
By d0nut (Jul 17th 2010, 10:15am)
By 8inLine (Jul 16th 2010, 9:44pm)
Forum Software: Burning Board® 3.1.3, developed by WoltLab® GmbH