Also speichert man das Passwort verschlüsselt.
Ich habe das einmal (neben weiteren Maßnahmen) so gemacht, dass ein Passwort oder ähnliches an sich nicht ausreicht. Der Client ruft ein Skript auf dem Server auf und bekommt von dort Bytecode, der zur Verschlüsselung der Anforderung dient. Dieser Bytecode wird von einem kleinen Interpreter ausgeführt und ist auch nur für die nächste Anfrage gültig.
Auf diese Weise müsste ein Angreifer sehr viel Aufwand betreiben. Da der Bytecode serverseitig dynamisch generiert wird, aber clientseitig ausgeführt wird, reicht es auch nicht aus einmalig herauszufinden was der macht. Man müsste den Interpreter nachbauen und dann noch herausfinden was dort wie an Daten hereinkommt und welche davon benötigt werden.
Das war ursprünglich nur eine kleine Übung. Und für mich reichte das aus, denn wer das knacken kann, der schafft es auch alles andere zu knacken.