Probleme mit QueryString (Verschluesselung)

17/01/2009 - 18:40 von Alberto Luca | Report spam
Hallo NewsGroup,

im Zuge einer Benutzerverwaltung versende ich ein EMail mit einem Link.
In dem Link ist dann eine aspx-Seite angegeben mit einem GetParameter.
Diesen GetParameter habe ich komplett verschlüsselt (AES und Encoding.UTF8).

Bei der verlinkten aspx-Seite habe ich nun dass Problem, dass ich die
Decodierung nicht mehr funktioniert.

Vorgehensweise bei der verlinkten aspx-Seite:
1) QueryString einlesen
2) QueryString mittels HttpUtility.UrlDecode bearbeiten
3) nun noch Decrypten (AES) => Fehler

GetParameter:
Aufruf
"3UJEaaCG/0i3ys+oITOj0q9Ns2ff21I2JJ1SIz40acv0vbD999ehHye35Ou0FqssoWP0L91GjI6em+abEWr0zcbrHMYfal1y5cIIeBkpejE="

nach 1) QueryString einlesen
"3UJEaaCG%2f0i3ys+oITOj0q9Ns2ff21I2JJ1SIz40acv0vbD999ehHye35Ou0FqssoWP0L91GjI6em+abEWr0zcbrHMYfal1y5cIIeBkpejE="

nach 2) QueryString mittels HttpUtility.UrlDecode bearbeiten
"3UJEaaCG/0i3ys
oITOj0q9Ns2ff21I2JJ1SIz40acv0vbD999ehHye35Ou0FqssoWP0L91GjI6em
abEWr0zcbrHMYfal1y5cIIeBkpejE="

Und hier ist schon mein Problem:
nach 2) ist der ermittelte String abweichend vom Aufruf (und làsst sich
nicht mehr decrypten).

Vielleicht hat jemand einen Rat?!


Coding:
lstrParameter = Request.QueryString.ToString(); //
"Action=UserActivate%3bValidUntil%3d18.01.2009%3bEMail%3dhugo%40gmx.de"
lstrParameter = HttpUtility.UrlDecode(lstrParameter); //
"Action=UserActivate;ValidUntil.01.2009;EMail=hugo@gmx.de"
lstrParameter_Decrypted = decryptAES(lstrParameter, "pw"); //
Fehler


Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
17/01/2009 - 18:55 | Warnen spam
Hallo Alberto,

"Alberto Luca" schrieb:

im Zuge einer Benutzerverwaltung versende ich ein EMail mit einem Link.
In dem Link ist dann eine aspx-Seite angegeben mit einem GetParameter.
Diesen GetParameter habe ich komplett verschlüsselt (AES und Encoding.UTF8).



Warum nimmst Du dafür nicht einfach eine Guid, die dann in der Datenbank mit
der durchzuführenden Aktion gespeichert wird. Dann

"3UJEaaCG/0i3ys+oITOj0q9Ns2ff21I2JJ1SIz40acv0vbD999ehHye35Ou0FqssoWP0L91GjI6em+abEWr0zcbrHMYfal1y5cIIeBkpejE="
"3UJEaaCG/0i3ys oITOj0q9Ns2ff21I2JJ1SIz40acv0vbD999ehHye35Ou0FqssoWP0L91GjI6em abEWr0zcbrHMYfal1y5cIIeBkpejE="



Wie Du siehst, werden die + durch Leerzeichein ersetzt, was auch so richtig ist.
Du müsstest also den QueryString mittels Server.UrlEncode vor der Ausgabe nochmal
korrigieren.

Aber dennoch würde ich hier gar nicht versuchen, was zu verschlüsseln. Einfach
http://server/datei.aspx?ID={123-456-789} nehmen und keine Probleme haben.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen