• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]

    一、工具:
     vs2013[因为我现在用的也是2013,版本随便你自己开心]
     sql2008[准备过久升级] 

    二、用到的语言

    HTML+CSS+Jquery+Ajax+sqlserver

    HTML[相当于一个人]

    css[要穿衣服]

    Jquery[人要做一些动作,Jquery是对js一些常用方法的封装]

    Ajax[建立前端页面与数据库的交互]
    sqlserver[数据库] 

    三、过程
    html部分代码:

    body>
      div id="header">
        div id="header_con">
          a href="javascript:;" onclick="showRegBox()">注册/a>
          a href="javascript:;" onclick="ShowLoginBox()">登录/a>
        /div>
      /div>
      div id="loginBox">
        div class="login_Item">
          input type="text" id="TxtUserName" placeholder="手机邮箱/用户名" />
        /div>
        div class="login_Item">input type="password" id="TxtPwd" placeholder="请输入密码" />/div>
        div class="login_Item">a href="javascript:;" onclick="login()">登录/a>/div>
      /div>
      div id="Regbox">
        div class="login_Item">input type="text" id="TxtRegUserName" placeholder="手机邮箱/用户名" />/div>
        div class="login_Item">input type="password" id="TxtRegPwd" placeholder="请输入密码" />/div>
        div class="login_Item">input type="text" id="TxtRegqq" placeholder="QQ号"/>/div>
        div class="login_Item">input type="text" id="TxtRegEmail" placeholder="邮箱" />/div>
        div class="login_Item">a href="javascript:;" onclick="Reglogin()">注册/a>/div>
        /div>
    /body>

    css代码:

    * {
      margin:0px;
      padding:0px;
    }
    #header {
      height:40px;
      width:100%;
      background:#000000;
    }
    
    a {
     text-decoration:none;
    }
    #header a {
      float:right;
      color:#ffffff;
      line-height:40px;
      margin-left:10px;
    }
    #header_con {
      width:1200px;
      margin:0px auto;
    }
    .login_Item {
      margin-left:20px;
    }
    .login_Item input {
      width:348px;
      height:40px;
      margin-top:10px;
      border:solid 1px #04a6f9;
    }
    .login_Item a {
      margin-top:20px;
      width:350px;
      height:40px;
      display:block;
      background:#04a6f9;
      color:#ffffff;
      line-height:40px;
      text-align:center;
    }
    #loginBox {
      display:none;/*//隐藏状态*/
      margin:0px auto;
    }
    
    #Regbox {
      display:none;
    } 
    
    

    js代码:[用了layer插件]

    /// reference path="_references.js" />
    /// reference path="jquery.md5.js" />
    
    function ShowLoginBox()
    {
      layer.open({
        type: 1,
        title: "用户登录",
        //设置div大小
        area: ["390px", "300px"],
        content: $("#loginBox")
      });
    }
    
    function login()
    {
      //1.获取到用户名和密码
      var username = $.trim($("#TxtUserName").val());
      var pwd =$.md5( $.trim($("#TxtPwd").val()));
      //2.判断用户名和密码是否为空
      if (username == "" || pwd == "") {
        layer.alert("用户名或密码不能为空!",
          {
            title: "提示:",
            icon: 5
          });
      }
      else
      {
        $.post("/Handler1.ashx", { "UserName": username, "Pwd": pwd,"cmd":"login" }, function (data)
        {
          if (data == "登录成功") {
            //layer.alert("登录成功!",
            layer.msg("登录成功!",
              {
                //title: "提示:",
                icon: 6
              });
          }
          else
          {
            layer.msg("用户名或密码不正确",
              {
                //title: "提示:",
                icon: 5
              });
          }
        });
      }
    }
    
    function showRegBox()
    {
      layer.open({
        type:1,
        title:"注册",
        area: ["390px", "350px;"],
        //div的内容
        content:$("#Regbox")
      });
    }
    
    function Reglogin()
    {
      //1.获取到输入的内容
      var username = $.trim($("#TxtRegUserName").val());
      var pwd =$.md5($.trim($("#TxtRegPwd").val()));
      var qq = $.trim($("#TxtRegqq").val());
      var email = $.trim($("#TxtRegEmail").val());
      //并做判断
      if (username == "" || pwd == "") {
        layer.msg("用户名或密码不能为空!");
      }
      else
      {//cmd用做标示,判断是注册还是登录
        $.post("/Handler1.ashx", { "UserName": username, "Pwd": pwd,"qq":qq,"email":email,"cmd": "reg" }, function (data)
        {
          if (data == "注册成功") {
            layer.msg("恭喜你,注册成功!",
              {
                icon: 6
              });
          }
          else
          {
            layer.msg(data,
              {
                icon:5
              });
          }
        });
      }
    }
    
    

    ajax代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace baidu20160707
    {
      /// summary>
      /// Handler1 的摘要说明
      /// /summary>
      public class Handler1 : IHttpHandler
      {
        public HttpContext context;
        public string strResult = "";
        public void ProcessRequest(HttpContext context)
        {
          this.context = context;
          string cmd=context.Request.Form["cmd"];
          switch (cmd)
          {
            case "login":
              strResult = loginAjax();
              break;
            case "reg":
              strResult = RegAjax();
              break;
          }
          context.Response.Write(strResult);
        }
    
        //登录
        public string loginAjax()
        {
          //1.接收传过来的用户名和密码
          string username = context.Request.Form["username"];
          //类名调用方法,32位,再做加盐处理
          string pwd =Md5Class.GetMD5( context.Request.Form["pwd"]+"傻逼玩意",32);
          //所在对应的id是否存在
          //string strsql = string.Format("select id from Users where UserName='{0}' and Pwd='{1}'", username, pwd);
          //sql注入处理1.@传参的方式,, username, pwd不要,'分号也不要'
          string strsql = string.Format("select id from Users where UserName=@UserName and Pwd=@Pwd");
          //sql注入处理2.调用SqlParameter[]数组对数据进行过滤
          SqlParameter[] paras = new SqlParameter[] 
          {
            new SqlParameter("@UserName",SqlDbType.NVarChar),
            new SqlParameter("@Pwd",SqlDbType.NVarChar)
          };
          //sql注入处理3.指定它的值
          paras[0].Value = username;
          paras[1].Value = pwd;
          //sql注入处理,4.不能忘记把数组对象传进去
          if (SqlHelper.Exists(strsql,paras))
          {
            //context.Response.Write("登录成功");
            return "登录成功";
          }
          else
          {
            //context.Response.Write("用户名或密码不正确");
            return "用户名或密码不正确";
          }
        }
    
        //注册
        public string RegAjax()
        {
          //接收传过来的用户名和密码
          string username=context.Request.Form["username"];
          string pwd=Md5Class.GetMD5(context.Request.Form["pwd"]+"傻逼玩意",32);
          string qq=context.Request.Form["qq"];
          string email = context.Request.Form["email"];
          //string strsql1 = string.Format("select id from Users where UserName='{0}' ",username,pwd);
          string strsql1 = string.Format("select id from Users where UserName=@UserName ");
          SqlParameter[] paras1 = new SqlParameter[] 
          {
            new SqlParameter("@UserName",SqlDbType.NVarChar)
          };
          paras1[0].Value = username;
          if (SqlHelper.Exists(strsql1, paras1))
          //if (SqlHelper.Exists(strsql1))
          {
            return "该用户已注册,请重新输入";
          }
          else
          {
            //不存在就注册
            //string strsql2 = string.Format("insert into Users (UserName,Pwd,QQ,eMail) values('{0}','{1}','{2}','{3}')", username, pwd, qq, email);
            //, username, pwd, qq, email
            string strsql2 = string.Format("insert into Users (UserName,Pwd,QQ,eMail) values(@UserName,@Pwd,@QQ,@eMail)");
            SqlParameter[] paras2 = new SqlParameter[] 
            {
              new SqlParameter("@UserName",SqlDbType.NVarChar),
              new SqlParameter("@Pwd",SqlDbType.NVarChar),
              new SqlParameter("@QQ",SqlDbType.NVarChar),
              new SqlParameter("@eMail",SqlDbType.NVarChar),
            };
            paras2[0].Value = username;
            paras2[1].Value = pwd;
            paras2[2].Value = qq;
            paras2[3].Value = email;
            //插入处理
            if (SqlHelper.ExecteNonQueryText(strsql2, paras2) > 0)
            {
              return "注册成功";
            }
            else
            {
              return "注册失败";
            }
          }
        }
        public bool IsReusable
        {
          get
          {
            return false;
          }
        }
      }
    }
    
    

    效果:点击登录弹出登录框,点击注册,弹出注册框

    四、MD5加密算法

    MD5加密算法:大多数情况下,用户的密码是存储在数据库中的,如果不采取任何的保密措施,以明文的方式保存密码,查找数据库的人员就可以轻松获取用户的信息,所以为了增加安全性,对数据进行加密是必要的。MD5,是一种用于产生数字签名的单项散列算法,它以512位分组来处理输入的信息,且每一分组又被划分为16位子分组,经过一系列处理,算法的输入由4个32位分组级联后生成一个128位散列值。

    没有加密之前的明文通过解析的效果:

    注册信息:

    建议:从源头解决这种问题,运用正则表达式从源头入手,尽量设置一些含有特殊字符的密码。

    虽然MD5加密是单项加密,但其结构还是可以破解的。所以,通常情况下,我们后做[两次md5加密,再做加盐处理]。

    用了sql注入处理+MD5两次加密以及加盐处理之后的效果:

    数据库显示的该条数据:

    五、sql注入

    sql注入是指攻击者利用数据库数据的漏洞进行攻击,特别是在登录时,用户常利用SQL语句中的特定字符创建一个恒等条件,从而不需要任何用户名和密码就可以访问网站数据。

    具体:http://www.cnblogs.com/wangwangwangMax/p/5551614.html

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    作者:wangwangwangMax

    您可能感兴趣的文章:
    • ThinkPHP之用户注册登录留言完整实例
    • Laravel实现用户注册和登录
    • 基于jquery+thickbox仿校内登录注册框
    • 图文演示Flash+ASP实现用户登录/注册程序
    • php自动注册登录验证机制实现代码
    • ASP.NET登录注册页面实现
    • Codeigniter注册登录代码示例
    • 在jsp中用bean和servlet联合实现用户注册、登录
    • Android开发之注册登录方法示例
    • 用Python实现web端用户登录和注册功能的教程
    上一篇:图文详解SQL Server 2008 R2安装配置方法
    下一篇:卸载SQL2008遇到问题(重启计算机失败、找不到SQL卸载程序)的解决办法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密] 一个,简单,的,后台,与,数据库,