Request.Querystring удаляет символы из зашифрованного текста

В своем приложении я беру адрес электронной почты пользователя, шифрую его, кодирую URLE и передаю в QueryString.

email = Server.UrlEncode(aes.Encrypt(email));

Целевая страница выполняет запрос.Querystring ["email"], UrlDecodes его, а затем дешифрует.

    string email            = Server.UrlDecode(Request.QueryString["eId"]);
    string decemail         = aes.Decrypt(email);
    return decemail;

Очень странное поведение происходило, когда удалялся символ "+" и, следовательно, расшифровка заканчивалась неудачей.

Я попытался удалить код UrlDecode, но это не помогло решить проблему.

Что решило проблему, так это:

        string email            = Request.QueryString["eId"].ToString();
        string decemail         = aes.Decrypt(email);
        return decemail;

Избавляемся от UrlDecode и вызываем ToString () для строки запроса.

Кто-нибудь знает, почему это произойдет? Вызывает ли Request.QueryString urlDecode по умолчанию? Я не думаю, что это так.

Кроме того, почему в этом случае работает .ToString ()?

4 голоса | спросил Jack Marchetti 19 42009vEurope/Moscow11bEurope/MoscowThu, 19 Nov 2009 01:50:50 +0300 2009, 01:50:50

1 ответ


0

Да, верно. Request.QueryString фактически возвращает строку, которая уже была декодирована с помощью URL.

Источники:

  

http://www.codeproject.com/KB /custom-controls/antiauto.aspx?msg=1475521

     

http://www.kamath.com/codelibrary/cl006_url.asp

ответил mauris 19 42009vEurope/Moscow11bEurope/MoscowThu, 19 Nov 2009 01:54:54 +0300 2009, 01:54:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132