你的位置:首页 > 软件开发 > ASP.net > exchange邮箱系统增加验证码机制

exchange邮箱系统增加验证码机制

发布时间:2015-12-22 20:00:05
首先背景是exchange的邮箱系统没有后台源代码。因为这个原因,生成验证码的机制放在aspx的runat="sever"后台代码里面。首先需要找到iis中logon.aspx文件。在这里找到输入邮箱名和密码的input元素,对应增加上输入验证码的input和 ...

首先背景是exchange的邮箱系统没有后台源代码。因为这个原因,生成验证码的机制放在aspx的runat="sever"后台代码里面。

首先需要找到iis中logon.aspx文件。在这里找到输入邮箱名和密码的input元素,对应增加上输入验证码的input和显示验证码图片的img元素。

需要增加两个文件:VerifyCode.aspx是用户输入进行输入的验证码验证操作的代码;GetImg.aspx是用于显示验证码图片的,即将之前添加的img的src设置为这个GetImg.aspx即可。至于点击img之后自动刷新,则属于体验性的改进。

代码具体执行逻辑是GetImg在load的时候,将随机生成的验证码加密之后,存在客户端浏览器的cookie中,同时创建一个Img对象,将4位验证码字符按顺序输出到img对象上,同时img随机分布一些点pixel,之后图片的stream返回到浏览器上。

而VerifyCode的验证则是则根据输入的内容和之前的cookie存的密文解密之后进行比较,如果一致,则通过验证。

VerifyCode.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" Debug="true" %><%@ Import Namespace="System.Security.Cryptography" %><script runat="server">  protected void Page_Load(object sender, EventArgs e)  {    if (Request.Cookies["yzmCode"] != null && Request.QueryString["yzmc"] != null)    {      get='_blank'>string code = Decrypt(Request.Cookies["yzmCode"].Value).ToUpper();      //Response.Write("code"+code+"\n");      //Response.Write("code"+code+"\n");      //Response.End();      string ucode = Request.QueryString["yzmc"].ToUpper();      if (code == ucode)      {        Response.Write("ok");        Response.End();      }      else      {        Response.Write("error");        Response.End();      }    }    else    {      Response.Write("error2");      Response.End();    }  }  public static string Decrypt(string Text)  {    string sKey = "Exchange";    DESCryptoServiceProvider des = new DESCryptoServiceProvider();    int len;    len = Text.Length / 2;    byte[] inputByteArray = new byte[len];    int x, i;    for (x = 0; x < len; x++)    {      i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);      inputByteArray[x] = (byte)i;    }    des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));    des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));    System.IO.MemoryStream ms = new System.IO.MemoryStream();    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);    cs.Write(inputByteArray, 0, inputByteArray.Length);    cs.FlushFinalBlock();    return Encoding.Default.GetString(ms.ToArray());  }</script>

原标题:exchange邮箱系统增加验证码机制

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录