Ich bin eine .NET-Core-Middleware Schreiben der Abfrage-String-Parameter zu verschlüsseln, wo ich Benutzer mag so etwas wie ? Enc = VXzal017xHwKKPolDWQJoLACDqQ0fE // wGkgvRTdG/GgXIBDd1 zu sehen, während der Code diesen sieht? user = 123 & account = 456.Middleware verschlüsseln Abfragestring
Ich verschlüssele die Parameter mit einem IDataProtector. Die Invoke() in meiner Middleware sieht aus wie der Code unten
if (UriHelper.GetEncodedUrl(context.Request).Contains("?"))
{
string query = ExtractQuery((context.Request.GetEncodedUrl()));
int indexOfEnc = query.IndexOf(PARAMETER_NAME, StringComparison.OrdinalIgnoreCase);
if (indexOfEnc > -1)
{
var enc = context.Request.Query[PARAMETER_NAME];
enc = Decrypt(enc);
context.Request.Path = new PathString(context.Request.Path.Value + enc);
await _next.Invoke(context);
}
else if (context.Request.Method == "GET" || context.Request.Method == "POST")
{
// Encrypt the query string and redirects to the encrypted URL.
// Remove if you don't want all query strings to be encrypted automatically.
string encryptedQuery = Encrypt(query);
string tempRawUrl = UriHelper.GetEncodedUrl(context.Request).ToLower();
if (!(context.Request.Method == "POST" && tempRawUrl.Contains("ha")))
{
context.Response.Redirect(context.Request.Path.Value + "?" + PARAMETER_NAME + "=" + encryptedQuery);
}
}
}
else
{
await _next.Invoke(context);
}
das erste Mal, wenn ich den Benutzer anmelden, und gibt Sie/pass, den Code kommt in den elseif Abschnitt oben und wird verschlüsselt in Ordnung. Ich suche nach der „enc“ Abfrage param das nächste Mal und während es wird entschlüsselt und der Weg sieht gut aus, die
**await _next.Invoke(context);**
im Abschnitt, wenn tut nichts. Ich erwarte, dass es an den Controller geht, um den Benutzer/Ausweis zu validieren.
Bear mit mir bitte, das ist meine erste Middleware und ich versuche, die httphandlers in meinem Legacy-Code zu ersetzen.
Jede Hilfe wird geschätzt. Ich habe fast 5 Stunden damit verbracht und kann es anscheinend nicht herausfinden.
Nicht verwandt mit Ihrer Frage, aber welches Problem versuchen Sie zu lösen, indem Sie die Abfragezeichenfolge verschlüsseln? – CodeCaster
Möglicherweise müssen wir einen clientspezifischen geheimen Schlüssel in der Abfragezeichenfolge sowie eine Client-ID übergeben und möchten nicht, dass dies als reiner Text erfolgt. – Vish