Я пишу .Net Core, Middleware для шифрования параметров строки запроса, где я хочу, чтобы пользователь, чтобы увидеть что-то вроде ? Прил = VXzal017xHwKKPolDWQJoLACDqQ0fE // wGkgvRTdG/GgXIBDd1 в то время как код видит этот ? пользователь = 123 & аккаунт = 456.Middleware зашифровать строку запроса
Я шифрую параметры с помощью IDataProtector. Invoke() в моем промежуточного слоя выглядит код ниже
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);
}
В первый раз, когда я войти в систему и введите имя пользователя/пасс, код приходит к ELSEIF разделе выше, и получает в зашифрованном виде штрафа. Я смотрю на «ENC» запрос паров в следующий раз, и в то время как он получает расшифрован и путь выглядит хорошо,
**await _next.Invoke(context);**
в разделе, если ничего не делает. Я ожидаю, что он перейдет к контроллеру, чтобы проверить пользователя/пароль.
Не стесняйтесь, пожалуйста, это мое первое промежуточное ПО, и я пытаюсь заменить httphandlers в моем устаревшем коде.
Любая помощь приветствуется. Я потратил почти 5 часов на это и, похоже, не понял его.
Не имеет отношения к вашему вопросу, но какую проблему вы пытаетесь решить, зашифровав строку запроса? – CodeCaster
Возможно, нам придется передать секретный ключ для клиента в строке запроса, а также идентификатор клиента и не хотите, чтобы это происходило как обычный текст. – Vish