ASP.NET C# 通过URL加密解密传输数据
需求
使用HTML模板发送邮件,邮件中含有一个链接,点击链接打开浏览器,完成相应功能。
分析链接使用http://www.******.com?id=123456&name=Nicholas这种URL后面加连接字符串的形式。
问题问号后面的字符串是明文,不能传输一些敏感数据,并且容易遭到篡改。
解决方法将问号后面的字符串加密,需要的时候再解密。
使用html模板发送电子邮件在上篇博文《asp.net使用html模板发送电子邮件》已有介绍。
加密解密模块 try { param = Request.Url.Query; param = param.Substring(1, param.Length - 1); } catch (Exception) { Response.Write("<script>alert(\"error\")</script>"); return; } //解密 //param="userName,s_key" param = Decryption.Decrypt(param); String[] str = param.Split(',');//逗号分隔 if (str.Length == 2) { userName=str[0]; s_key=str[1]; //检验其是否有非法字符 if (Common.RegxURL(userName) && Common.RegxURL(s_key)) { //数据库验证userName与s_key是否对应 if (Common.validateKey(userName, s_key)) { //do something } }}其中Request.Url.Query所获得的是问号及问号后面的字符串,所以解密的时候要先把问号去掉。一定不要忘了进行数据库操作之前检查所获得的参数中是否有非法字符,防止SQL注入式攻击。前段时间火车票网站12306就爆出有多处SQL注入漏洞。THE END