簡単なバックグラウンドとデータベースのインタラクティブな登録と登録[sql注入処理、およびMD 5暗号化]


一、工具:
 vs 2013[私が今使っているのも2013ですので、バージョンは勝手に楽しんでください。]
 sql 2008[レベルアップ準備しました] 
二、使う言語
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;
      }
    }
  }
}

ログインをクリックしてログインボックスをポップアップし、登録をクリックして、登録ボックスをポップアップします。

四、MD 5暗号化アルゴリズム
MD 5暗号化アルゴリズム:ほとんどの場合、ユーザのパスワードはデータベースに格納されています。秘密保護措置を取らないなら、暗号を明文で保存し、データベースを検索する人はユーザの情報を簡単に取得できるので、安全性を高めるためには、データを暗号化する必要があります。MD 5は、入力された情報を512ビットのパケットで処理し、各パケットは16ビットのパケットに分割され、一連の処理を経て、アルゴリズムの入力は4つの32ビットのパケットカスケードによって128ビットのハッシュ値を生成するデジタル署名を生成するための単一のハッシュアルゴリズムである。
暗号化されていない前の明文を解析する効果:

登録情報:

提案:このような問題を元から解決し、正規表現を元から入手し、できるだけ特殊な文字を含むパスワードを設定します。
MD 5暗号化は単一暗号化であるが、その構造は解読可能である。ですから、通常は「2回md 5を暗号化し、塩を加える処理」をします。
sql注入処理+MD 5を使った二回暗号化と塩処理後の効果:

データベースに表示されるこのデータ:

五、sql注入
sql注入とは、攻撃者がデータベースデータの脆弱性を利用して攻撃することであり、特にログイン時にユーザ常利がSQL文の特定文字で恒等条件を作成し、ユーザ名とパスワードを必要とせずにウェブサイトのデータにアクセスすることができる。
具体的:http://www.cnblogs.com/wangwangwangMax/p/5551614.html
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
著者:wangwangwangMax