Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) hash, id, studivz, verschlüsselung (edit)
Seiten: (2) 1 [2]  ( Neuster Beitrag anzeigen )
Reply to this topicStart new topicStart Poll
> Security-Lehrstück StudiVZ, wie man es nicht machen sollte
4nDy
Geschrieben am: So 4.03.2007, 14:02
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 407
Mitglied seit: 17.02.2007


Hm, ich versteh es nicht.
Kann man mit den ID Veränderungen auch Daten anderer Nutzer ändern bzw. wichtige interne Daten sehen oder was?


--------------------
Top
PMEmail Poster
Top
 
 
patrickswelt
#22 Geschrieben am: So 4.03.2007, 16:40 (+02:38)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 80
Mitglied seit: 28.02.2007


QUOTE (DaBone @ So 4.3.2007, 14:52)
- POST-Formulare (v.a. für E-Mail-Adressen- und Passwortänderung): In einem HIDDEN-Feld die Session-ID mitsenden, den Referer checken (kann evtl. umgangen werden) oder das Passwort in jedem Formular mitverlangen (schlecht für die Usability).

Den Tipp verstehe ich nicht. Warum denn zusätzlich in einem Hidden-Feld?
Ich lese bei jedem Seitenaufruf die Session des Users aus und frage diese ab. Reicht das oder gibt es einen Grund für das Hidden-feld?
z.B.
CODE
if(hatRecht($_SESSION['userid'],$vorgang)){
.........
}


Ansonsten sehr interessante Zusammenfassung! Habe ich noch nicht alles gekannt.

Top
PMEmail PosterMSN
Top
 
hatschi1810
#23 Geschrieben am: So 4.03.2007, 17:17 (+00:36)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 638
Mitglied seit: 20.01.2004


QUOTE
Sicherheit ist doch eigentlich SOOO einfach.

QUOTE
* Datenbanken: addslashes(), falls magic_quotes off (gegen MySQL-Injections)


Sicherheit ist leider nicht einfach wie diese Sätze zeigen. Addslashes oder magic_quotes gelten ja nicht gerade als die sicherste Lösung!
Top
PMEmail Poster
Top
 
patrickswelt
#24 Geschrieben am: So 4.03.2007, 17:23 (+00:05)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 80
Mitglied seit: 28.02.2007


addslashes() halte ich für nicht so toll.
ich benutze htmlentities ( string string,ENT_QUOTES)
und bei numerischen angaben einfach vorher testen ob is_numeric() true ist.
Top
PMEmail PosterMSN
Top
 
DaBone
#25 Geschrieben am: So 4.03.2007, 18:14 (+00:51)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 142
Mitglied seit: 21.10.2006


QUOTE
Den Tipp verstehe ich nicht. Warum denn zusätzlich in einem Hidden-Feld?
Ich lese bei jedem Seitenaufruf die Session des Users aus und frage diese ab. Reicht das oder gibt es einen Grund für das Hidden-feld?


Nehmen wir an, das E-Mail-Adressen-Änderungs-Formular sieht so aus:
CODE
<form action="" method="post">
<input type="text" name="email" />
<input type="submit" name="submit" value="Absenden" />
</form>


Nun erstellt der Angreifer eine Seite, die so aussieht (stark gekürzt etc.):
CODE
<html>
<head><title></title></head>
<body onload="form.submit()">
<form action="" method="post" id="form">
<input type="text" name="email" value="mail-adresse-des@angreifers.com" />
<input type="submit" name="submit" value="Absenden" />
</form>
</body>
</html>

Diese Seite schickt er dem Opfer zu (gleiches Vorgehen wie bei XSS).
Nun wird die Adresse in Unwissenheit der Users geändert und der Angreifer kann die "Passwort vergessen"-Funktion des Dienstes verwenden, um Zugriff zu bekommen.
Klar?

QUOTE
Ansonsten sehr interessante Zusammenfassung! Habe ich noch nicht alles gekannt.
Danke.

QUOTE
Sicherheit ist leider nicht einfach wie diese Sätze zeigen. Addslashes oder magic_quotes gelten ja nicht gerade als die sicherste Lösung!
Kommt drauf an. Wenn man die Abfragen entsprechend formuliert (immer Anführungszeichen verwenden), ist es, so weit ich weiss, 100% sicher. Ansonsten freue ich mich über ein Gegenbeispiel, ich lerne auch immer wieder gerne dazu.

QUOTE
testen ob is_numeric() true
Aufgepasst damit. 5*10E2 ist, soweit ich weiss, auch ein numerischer Wert. Je nach dem gibts da evtl. noch eine Angriffsmöglichkeit, die Chance ist zwar extrem klein, aber man sollte sich dessen bewusst sein.

QUOTE
addslashes() halte ich für nicht so toll.
ich benutze htmlentities ( string string,ENT_QUOTES)
HTML-Entities in der Datenbank halte ich für zweckentfremdend. Die HTML-Entities sollte man meiner Meinung nach so spät wie möglich generieren, damit sie wirklich nur im HTML-Code stehen. In die Datenbank gehört die möglichst ursprüngliche Version.
Sonst gibt es ein Durcheinander (Textareas, URLs etc. müssen dann wieder zurückgewandelt werden).

htmlentities(,ENT_QUOTES): Genau das habe ich vergessen! Die Konstante ENT_QUOTES habe ich bei meinem obigen Post noch ergänzt.


--------------------
Top
PMUsers WebsiteMSN
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#26 Geschrieben am: So 4.03.2007, 18:41 (+00:26)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2432
Mitglied seit: 4.02.2006


QUOTE (DaBone @ So 4.3.2007, 18:14)
Diese Seite schickt er dem Opfer zu (gleiches Vorgehen wie bei XSS).
Nun wird die Adresse in Unwissenheit der Users geändert und der Angreifer kann die "Passwort vergessen"-Funktion des Dienstes verwenden, um Zugriff zu bekommen.
Klar?

Das ist ein schönes Beispiel für konzeptionelle Fehler, die nicht durch die obige Liste abgefangen werden.

Die Änderung der Mailadresse muß zwingend die Eingabe des Passwortes erfordern.

Diese Liste stopft deshalb - vielleicht - 5% der potentiellen Sicherheitslücken, nicht 99%.

Und bei einem Nutzer, der Daten in ein per Mail zugesandtes Formular eingibt und es absendet, bei dem ist ohnehin alles vergeblich.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
hatschi1810
#27 Geschrieben am: So 4.03.2007, 18:50 (+00:09)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 638
Mitglied seit: 20.01.2004


Ein Beispiel wie addslashes versagen kann:
http://shiflett.org/archive/184

Leider gibt es halt auch Methoden um mysql_real_escape_string zu umgehen.
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#28 Geschrieben am: So 4.03.2007, 19:28 (+00:37)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2432
Mitglied seit: 4.02.2006


QUOTE (hatschi1810 @ So 4.3.2007, 18:50)
Ein Beispiel wie addslashes versagen kann:
http://shiflett.org/archive/184

Leider gibt es halt auch Methoden um mysql_real_escape_string zu umgehen.

Jo, solche Dinge skizzieren einige der Probleme. Die eigentliche Schlußfolgerung steht gleich im ersten Kommentar:

QUOTE
My main advice to people is to always use prepared statements and then bind your parameters. Even if you are not planning to reuse the prepared statement, and won't get any performance benefit from doing so, it will prevent your apps from being attached using SQL injections because parameters are bound after the statement is compiled.
People just shouldn't be using anything else!


Aber dies ist das, was die meisten PHP/mySql - Nutzer leider nicht so gerne hören möchten, da dann nämlich der Entwicklungsaufwand dramatisch ansteigt:

Alle Datenänderungen über gespeicherte Prozeduren abwickeln und nur ein Backend nutzen, das dies unterstützt.

Und spätestens dann ist nichts mehr mit 'StudiVZ in einer Woche entwickeln'.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
Joel
Enzian Media GmbH
#29 Geschrieben am: So 4.03.2007, 20:12 (+00:44)
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1441
Mitglied seit: 17.06.2004


QUOTE

Nennt sich dann Rainbow-Tables und existiert in der Tat bereits. Komplexe Passwörter, insbesondere auch mit Sonderzeichen sind aber dennoch recht sicher, da es keine "Kompletten" Rainbow-Tables geben kann. .

Dass MD5-Hashes mit Rainbow-Tables gehackt werden, kann man jedoch ganz einfach mit Salts verhindern.

CODE

<?PHP
 md5( "$userid-$password" );
?>

Somit hat jeder User ein eigenes Salt, was natürlich Rainbow-Tables unnütz macht. Der einzige Weg die Passwörter dann noch zu knacken ist bruite force, was sehr lange dauern kann...


--------------------
EagleFind.com - Die visuelle Suchmaschine
Enzian Media bietet Entwicklung von Websites, Videos und Webcam-Streaming.

Suxedoo- Werbekampagne im Wert von 5000.- jetzt Gewinnen! Nur für im Handelsregister eingetragene Frimen!
Top
PMUsers WebsiteICQ
Top
 
DaBone
#30 Geschrieben am: So 4.03.2007, 23:14 (+03:02)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 142
Mitglied seit: 21.10.2006


QUOTE
Das ist ein schönes Beispiel für konzeptionelle Fehler, die nicht durch die obige Liste abgefangen werden.
???
Ich hab ja die entsprechende Lösung in der Liste genannt.

Für die andere Methode habe ich jedoch keine Konzeptlösung parat. Allerdings steckt hier der Fehler meiner Meinung nach eher bei PHP, da addslashes() seinen Dienst nicht zu 100% korrekt verrichtet. Ich habe mir bereits überlegt, dass entsprechende Zeichen existieren müssen (Sonderzeichen bestehen ja immer aus 2 Zeichen, wie man es immer an den Umlauten sieht, die falsch interpretiert werden). Hier könnte man allerdings auch alle "bösen" Sonderzeichen vorher rausfiltern.

Die von madox genannte und sehr sinnvolle Variante ist genau so eine von mir genannte Weiterverarbeitung des MD5-Hashs.
Man kann beispielsweise auch ganz einfach den MD5-Hash nochmals hashen, und schon bringen die ganzen Rainbowtables nichts mehr.

EDIT: Aaah das ewige Character Encoding... Kennt da jemand ein gutes allgemeines Tutorial? Ich blick da kaum durch.


--------------------
Top
PMUsers WebsiteMSN
Top
 
patrickswelt
#31 Geschrieben am: Mo 5.03.2007, 10:52 (+11:37)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 80
Mitglied seit: 28.02.2007


Lasst uns doch mal eine Funktion entwickeln, die man dann auf alle DB einträge anwenden kann. Das wäre sicherlich für viele praktisch.
z.B.
function mysql_insert_format($text,$feldtyp,$feldgroesse){

}

Aufruf zb mit $_POST['Username'] = mysql_insert_format($_POST['Username'],"varchar","15");


Oder gibt es sowas schon?
Top
PMEmail PosterMSN
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/15288

Topic Options Seiten: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Security: Gif-Bild plus Java-Klasse im Profil jAuer 304 6 Sa 2.08.2008, 19:21
Facebook verklagt StudiVZ jAuer 890 15 So 20.07.2008, 23:19
StudiVZ mahnt ab wie Hölle! Toblerone 4155 49 Fr 7.03.2008, 10:23
StudiVZ will Nutzerdaten zu "Kifferbildern" an Sta Flo 557 19 Fr 29.02.2008, 09:15
StudiVZ - User wandern ab Toblerone 364 6 Do 10.01.2008, 16:31
StudiVZ setzt auf Schnüffel-Werbung Anak-VT 743 11 Sa 15.12.2007, 14:10
Frage zu StudiVZ Marc3l 417 6 Sa 29.09.2007, 20:52
Studivz / Studienverzeichnis - Domain evs 790 1 Mi 20.06.2007, 11:59
Kostenlose Tutorials - Hacking, Coding & Se ... mr. chaos 440 0 Fr 25.05.2007, 15:49
Publizierungsstrategie von StudiVz Toblerone 289 3 Mi 25.04.2007, 12:09




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]