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.