4 Stimmen

Speichern von Benutzername/Passwort während der Verarbeitung

Ich arbeite im Kontext einer ASP.NET-Anwendung und erstelle eine Seite, die in der Lage ist, Datenbankskripte gegen eine von vielen Datenbanken in unserer Umgebung auszuführen. Dazu müssen wir den Benutzer zur Eingabe einer Kombination aus Benutzername und Kennwort auffordern; dieser Wert kann problemlos für alle Server verwendet werden.

Die Frage ist, wo diese Informationen am sichersten gespeichert werden können. Wir müssen sie vorübergehend speichern, denn wenn sie auf dieser speziellen Seite sind, könnten sie Hunderte von Skripten über mehrere Postbacks ausführen. Soweit ich das beurteilen kann, habe ich 3 Möglichkeiten, und ich bin mir nicht sicher, welche die beste ist. Hier ist meine Meinung zu den Optionen, was ist die Empfehlung von allen hier? Was ist das sicherste und gleichzeitig benutzerfreundlichste?

Informationen zum Laden im Viewstate

Eine der ersten Ideen, die wir diskutierten, war die Speicherung der Informationen nach der Eingabe durch den Benutzer im ViewState für die Seite. Dies ist hilfreich, da die Informationen nur für die Lebensdauer der Seite vorhanden sind, allerdings sind wir uns über die Sicherheitsauswirkungen unsicher.

Informationen in der Sitzung speichern

Der nächste Gedanke, den wir hatten, war, sie in einer Sitzung zu speichern. Der Nachteil dabei ist jedoch, dass die Informationen anderen Seiten innerhalb der Anwendung zur Verfügung gestellt werden können und die Informationen immer im Speicher des Servers verbleiben.

Informationen in der Anwendung speichern

Die letzte Idee, die wir hatten, war, sie im Anwendungscache zu speichern, mit einem benutzerspezifischen Schlüssel und einem gleitenden 5-Minuten-Ablauf. Dies würde anderen Seiten immer noch zur Verfügung stehen, aber es würde sicherstellen, dass die Informationen für einen kürzeren Zeitraum zwischengespeichert werden.

Und warum?

Die letzte Frage, die wichtig ist, lautet: "Warum machen Sie das?". Warum verwenden wir nicht einfach ihre Lan-IDs? Nun, wir können keine Lan-IDs verwenden, da das Netzwerk keine Unterstützung für die Delegation bietet.

S0 Was ist die empfohlene Lösung? Warum? Wie sicher ist sie, und können wir das sein?

Update

Es wurden zahlreiche Informationen besprochen. Zur Klarstellung: Wir arbeiten in einer Intranet-Umgebung und können aufgrund von Einschränkungen im Netzwerk weder Impersonation noch Delegation verwenden.

0voto

Jon Ericson Punkte 20031

Speichern Sie niemals Passwörter!

Speichern Sie stattdessen den Hash eines Kennworts. Siehe: http://en.wikipedia.org/wiki/Crypt_(Unix)#Bibliothek_Funktion .

Ich weiß, dass dies keine Antwort auf die Frage ist, aber je mehr Programmierer diesen Ratschlag ignorieren, desto leichter wird es für Kriminelle, Daten zu stehlen. Lassen Sie nicht zu, dass Ihr Unternehmen in die Schlagzeilen gerät.

0voto

Andrew T Finnell Punkte 13107

Der Benutzername/das Kennwort sollte eigentlich nirgendwo gespeichert werden.

Sie speichern eine Live-Datenbankverbindung, vorzugsweise aus einem Pool, in Ihrem Session-Objekt. Sie benötigen den Benutzernamen und das Kennwort nur so lange, wie es dauert, sich bei der Datenbank anzumelden.

Während eine andere Seite die Live-Verbindung nutzen kann, erhält keine andere Person dauerhaften Zugriff auf die Datenbank, wie es bei der Speicherung eines Benutzernamens und eines Passworts der Fall wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X