Andreas Pflug: Folgender PHP Code. Wie geht das?

Beitrag lesen

Hallo,

function checkadmin($user=false,$pass=false){
  if (md5($user.$pass) == "7098094dfbfc937a76fbc25380fdfaff") return true;
else return false;
[...]
so wie ich ihn bisher verstehe:
Dies ist eine Funktion, die prüft, ob ich
der Admin bin.(Parameter $user=false,...)

soweit klar...

[...}
Was mich verwirrt, ist dieses "md5" und die Zeile "7098094dfbfc937a76fbc25380fdfaff". Gehören die zusammen?
Ist es einer Art Codierverfahren?  Oder woher weiss man, was es bedeutet?

md5 kann man als eine Art "Checksumme" eines
Byte-Arrays auffassen. Ein Codierverfahren trifft es
nicht ganz, da man die md5-Checksumme i. a. nicht
rückwärts dekodieren kann.

Natürlich kann man auch codieren

if ((user=="bofh") && (pass=="topsecret"))

dann kann aber jeder, der Leserechte auf den Sourcecode
hat, auch gleich den Login & Passwort im Klartext
sehen. Um dies zu verhindern tippst Du in einer
Kommandokonsole Deiner Wahl z. B.

echo bofhtopsecret | md5sum

und erhältst

a8697aeeef3bb42a93f22d1e43c3ef4

Der Witz ist jetzt, dass Du diese Zeichenkette im
Quelltext verwenden kannst und niemand erraten wird,
welche Kombination $user / $pass auf dieses Resultat
geführt hat. Sprich, wenn aus irgendeinem Grund es jemand
geschafft hat, das CGI-Skript herunterzuladen statt
auszuführen, wird er trotzdem nicht wissen, welche
$user/$pass-Kombination man eingeben muss, um das
Skript zum Laufen zu bringen.

Viele Grüße

Andreas