preko
Erfahrenes Mitglied
Hi,
ich habe aufgrund eines aktuellen Projektes mir mal Gedanken gemacht, wie ich die Sicherheit meiner Sessions erhöhen kann.
Daher bin ich auf die Idee gekommen, 3 verschiedene SHA1 Werte meiteinander zu kombinieren und diese als Session_id zu benutzen. Dies sollte die Möglichkeiten des zufälligen Treffers (z. B. mittels Rainbowtabellen/Rainbow Table) gegen Null tendieren lassen denke ich.
Hier mal den Denkansatz:
Die Ausgabe sähe wie folgt aus:
Das Array $mix[] wird dann als Session_id gespeichert. Kann man auch "nur" mit zwei SHA1 Werten machen, was die Arraylänge auf 80 Zeichen reduziert und die Reproduzierbarkeit auch minimal erscheinen lässt.
Was haltet ihr davon?
Beste Grüße!
ich habe aufgrund eines aktuellen Projektes mir mal Gedanken gemacht, wie ich die Sicherheit meiner Sessions erhöhen kann.
Daher bin ich auf die Idee gekommen, 3 verschiedene SHA1 Werte meiteinander zu kombinieren und diese als Session_id zu benutzen. Dies sollte die Möglichkeiten des zufälligen Treffers (z. B. mittels Rainbowtabellen/Rainbow Table) gegen Null tendieren lassen denke ich.
Hier mal den Denkansatz:
PHP:
/*
-------------------------------------------------------
Cryptography funktion - 3x SHA1 kombiniert
-------------------------------------------------------
*/
// "ClosedDoor" - SHA1 coded - Vom Benutzer frei gewählt
// und in Datenbank-Userprofil gespeichert
$salt_1 = "6a2181a17e3a4c902996a33266cfc554cff49be1";
// "MobyDick" - SHA1 coded - Fest implementiert im System
// vom Entwickler vergeben
$salt_2 = "29edcdf410a7907e3826c5fbc5a15f0a1ae95953";
// "FreeEntry" - SHA1 coded - Passwort des Benutzers
// von ihm frei gewählt
$password = "c4777c8581cb36c74be0923e4a4b1d753de6d4d6";
function cryptmix($salt_1,$salt_2,$password) {
echo "<p>".$salt_1."<br />";
echo $salt_2."<br />";
echo $password."</p>";
$salt_1 = str_split( $salt_1, 1 );
$salt_2 = str_split( $salt_2, 1 );
$password = str_split( $password, 1 );
// Jeweils die 1. Ziffer der 3 Strings wird hintereinandergereiht,
// dann die 2., etc.
for($i=0; $i<40; $i++) {
$mix[] = $salt_1[$i].$salt_2[$i].$password[$i];
}
// Ausgabe des "gemischten" (Gesamt-) Strings mit 120 Stellen
echo "Mix: ";
for($i=0; $i<40; $i++) {
echo $mix[$i];
}
// Wandelt das Array $mix[] in den String $mix um zwecks weiterer Verwendung
$mix = join('',$mix);
}
// Aufruf der Funktion
cryptmix($salt_1,$salt_2,$password);
Die Ausgabe sähe wie folgt aus:
Salt_1: 6a2181a17e3a4c902996a33266cfc554cff49be1
Salt_2: 29edcdf410a7907e3826c5fbc5a15f0a1ae95953
Password: c4777c8581cb36c74be0923e4a4b1d753de6d4d6
Mix: 62ca942e71d78c71dcaf8145718e013aca7b493c0697c0e723498b92e660ac93523f32be6c465aca4f1bc515fd5074a5c13fadfee49695db94e5d136
Das Array $mix[] wird dann als Session_id gespeichert. Kann man auch "nur" mit zwei SHA1 Werten machen, was die Arraylänge auf 80 Zeichen reduziert und die Reproduzierbarkeit auch minimal erscheinen lässt.
Was haltet ihr davon?
Beste Grüße!
Zuletzt bearbeitet: