问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么事sql注入?数据库

发布网友 发布时间:2022-04-09 05:43

我来回答

3个回答

懂视网 时间:2022-04-09 10:04

<body> 2 <div id="header"> 3 <div id="header_con"> 4 <a href="javascript:;" onclick="showRegBox()">注册</a> 5 <a href="javascript:;" onclick="ShowLoginBox()">登录</a> 6 </div> 7 </div> 8 <div id="loginBox"> 9 <div class="login_Item"> 10 <input type="text" id="TxtUserName" placeholder="手机邮箱/用户名" /> 11 </div> 12 <div class="login_Item"><input type="password" id="TxtPwd" placeholder="请输入密码" /></div> 13 <div class="login_Item"><a href="javascript:;" onclick="login()">登录</a></div> 14 </div> 15 <div id="Regbox"> 16 <div class="login_Item"><input type="text" id="TxtRegUserName" placeholder="手机邮箱/用户名" /></div> 17 <div class="login_Item"><input type="password" id="TxtRegPwd" placeholder="请输入密码" /></div> 18 <div class="login_Item"><input type="text" id="TxtRegqq" placeholder="QQ号"/></div> 19 <div class="login_Item"><input type="text" id="TxtRegEmail" placeholder="邮箱" /></div> 20 <div class="login_Item"><a href="javascript:;" onclick="Reglogin()">注册</a></div> 21 </div> 22 </body>

 

   css代码:

 1 * {
 2  margin:0px;
 3  padding:0px;
 4 }
 5 #header {
 6  height:40px;
 7  width:100%;
 8  background:#000000;
 9 }
10 
11 a {
12  text-decoration:none;
13 }
14 #header a {
15  float:right;
16  color:#ffffff;
17  line-height:40px;
18  margin-left:10px;
19 }
20 #header_con {
21  width:1200px;
22  margin:0px auto;
23 }
24 .login_Item {
25  margin-left:20px;
26 }
27 .login_Item input {
28  width:348px;
29  height:40px;
30  margin-top:10px;
31  border:solid 1px #04a6f9;
32 }
33 .login_Item a {
34  margin-top:20px;
35  width:350px;
36  height:40px;
37  display:block;
38  background:#04a6f9;
39  color:#ffffff;
40  line-height:40px;
41  text-align:center;
42 }
43 #loginBox {
44  display:none;/*//隐藏状态*/
45  margin:0px auto;
46 }
47 
48 #Regbox {
49  display:none;
50 }

 

   js代码:[用了layer插件]

 1 /// <reference path="_references.js" />
 2 /// <reference path="jquery.md5.js" />
 3 
 4 function ShowLoginBox()
 5 {
 6  layer.open({
 7  type: 1,
 8  title: "用户登录",
 9  //设置div大小
10  area: ["390px", "300px"],
11  content: $("#loginBox")
12  });
13 }
14 
15 function login()
16 {
17 //1.获取到用户名和密码
18 var username = $.trim($("#TxtUserName").val());
19 var pwd =$.md5( $.trim($("#TxtPwd").val()));
20 //2.判断用户名和密码是否为空
21 if (username == "" || pwd == "") {
22  layer.alert("用户名或密码不能为空!",
23   {
24   title: "提示:",
25   icon: 5
26   });
27  }
28 else
29  {
30  $.post("/Handler1.ashx", { "UserName": username, "Pwd": pwd,"cmd":"login" }, function (data)
31  {
32  if (data == "登录成功") {
33   //layer.alert("登录成功!",
34   layer.msg("登录成功!",
35    {
36    //title: "提示:",
37    icon: 6
38    });
39   }
40  else
41   {
42   layer.msg("用户名或密码不正确",
43    {
44    //title: "提示:",
45    icon: 5
46    });
47   }
48  });
49  }
50 }
51 
52 function showRegBox()
53 {
54  layer.open({
55  type:1,
56  title:"注册",
57  area: ["390px", "350px;"],
58  //div的内容
59  content:$("#Regbox")
60  });
61 }
62 
63 function Reglogin()
64 {
65 //1.获取到输入的内容
66 var username = $.trim($("#TxtRegUserName").val());
67 var pwd =$.md5($.trim($("#TxtRegPwd").val()));
68 var qq = $.trim($("#TxtRegqq").val());
69 var email = $.trim($("#TxtRegEmail").val());
70 //并做判断
71 if (username == "" || pwd == "") {
72  layer.msg("用户名或密码不能为空!");
73  }
74 else
75 {//cmd用做标示,判断是注册还是登录
76  $.post("/Handler1.ashx", { "UserName": username, "Pwd": pwd,"qq":qq,"email":email,"cmd": "reg" }, function (data)
77  {
78  if (data == "注册成功") {
79   layer.msg("恭喜你,注册成功!",
80    {
81    icon: 6
82    });
83   }
84  else
85   {
86   layer.msg(data,
87    {
88    icon:5
89    });
90   }
91  });
92  }
93 }

 

   ajax代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Data;
 6 using System.Data.SqlClient;
 7 
 8 namespace baidu20160707
 9 {
 10 /// <summary>
 11 /// Handler1 的摘要说明
 12 /// </summary>
 13 public class Handler1 : IHttpHandler
 14  {
 15  public HttpContext context;
 16  public string strResult = "";
 17  public void ProcessRequest(HttpContext context)
 18  {
 19  this.context = context;
 20  string cmd=context.Request.Form["cmd"];
 21  switch (cmd)
 22   {
 23   case "login":
 24   strResult = loginAjax();
 25   break;
 26   case "reg":
 27   strResult = RegAjax();
 28   break;
 29   }
 30   context.Response.Write(strResult);
 31  }
 32 
 33  //登录
 34  public string loginAjax()
 35  {
 36  //1.接收传过来的用户名和密码
 37  string username = context.Request.Form["username"];
 38  //类名调用方法,32位,再做加盐处理
 39  string pwd =Md5Class.GetMD5( context.Request.Form["pwd"]+"傻逼玩意",32);
 40  //所在对应的id是否存在
 41  //string strsql = string.Format("select id from Users where UserName=‘{0}‘ and Pwd=‘{1}‘", username, pwd);
 42  //sql注入处理1.@传参的方式,, username, pwd不要,‘分号也不要‘
 43  string strsql = string.Format("select id from Users where UserName=@UserName and Pwd=@Pwd");
 44  //sql注入处理2.调用SqlParameter[]数组对数据进行过滤
 45  SqlParameter[] paras = new SqlParameter[] 
 46   {
 47   new SqlParameter("@UserName",SqlDbType.NVarChar),
 48   new SqlParameter("@Pwd",SqlDbType.NVarChar)
 49   };
 50  //sql注入处理3.指定它的值
 51  paras[0].Value = username;
 52  paras[1].Value = pwd;
 53  //sql注入处理,4.不能忘记把数组对象传进去
 54  if (SqlHelper.Exists(strsql,paras))
 55   {
 56   //context.Response.Write("登录成功");
 57   return "登录成功";
 58   }
 59  else
 60   {
 61   //context.Response.Write("用户名或密码不正确");
 62   return "用户名或密码不正确";
 63   }
 64  }
 65 
 66  //注册
 67  public string RegAjax()
 68  {
 69  //接收传过来的用户名和密码
 70  string username=context.Request.Form["username"];
 71  string pwd=Md5Class.GetMD5(context.Request.Form["pwd"]+"傻逼玩意",32);
 72  string qq=context.Request.Form["qq"];
 73  string email = context.Request.Form["email"];
 74  //string strsql1 = string.Format("select id from Users where UserName=‘{0}‘ ",username,pwd);
 75  string strsql1 = string.Format("select id from Users where UserName=@UserName ");
 76  SqlParameter[] paras1 = new SqlParameter[] 
 77   {
 78   new SqlParameter("@UserName",SqlDbType.NVarChar)
 79   };
 80  paras1[0].Value = username;
 81  if (SqlHelper.Exists(strsql1, paras1))
 82  //if (SqlHelper.Exists(strsql1))
 83   {
 84   return "该用户已注册,请重新输入";
 85   }
 86  else
 87   {
 88   //不存在就注册
 89   //string strsql2 = string.Format("insert into Users (UserName,Pwd,QQ,eMail) values(‘{0}‘,‘{1}‘,‘{2}‘,‘{3}‘)", username, pwd, qq, email);
 90   //, username, pwd, qq, email
 91   string strsql2 = string.Format("insert into Users (UserName,Pwd,QQ,eMail) values(@UserName,@Pwd,@QQ,@eMail)");
 92   SqlParameter[] paras2 = new SqlParameter[] 
 93   {
 94   new SqlParameter("@UserName",SqlDbType.NVarChar),
 95   new SqlParameter("@Pwd",SqlDbType.NVarChar),
 96   new SqlParameter("@QQ",SqlDbType.NVarChar),
 97   new SqlParameter("@eMail",SqlDbType.NVarChar),
 98   };
 99   paras2[0].Value = username;
100   paras2[1].Value = pwd;
101   paras2[2].Value = qq;
102   paras2[3].Value = email;
103   //插入处理
104   if (SqlHelper.ExecteNonQueryText(strsql2, paras2) > 0)
105   {
106   return "注册成功";
107   }
108   else
109   {
110   return "注册失败";
111   }
112   }
113  }
114  public bool IsReusable
115  {
116  get
117   {
118   return false;
119   }
120  }
121  }
122 }

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

技术分享

 

四、MD5加密算法

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

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

      技术分享

     注册信息:

     技术分享

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

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

 

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

    技术分享

   数据库显示的该条数据:

   技术分享

 

五、sql注入

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

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

 

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

标签:

热心网友 时间:2022-04-09 07:12

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

热心网友 时间:2022-04-09 08:30

说明:把SQL命令插入Web表单递交或输入域名或页面请求查询字符串终达欺骗服务器执行恶意SQL命令。

下面给一个简单是注入示例。

假如网站登录的语句是: select * from user where id = xxx
如果我修改成注入,在用户账号输入框写入 or 1 = 1 这样也是可以骗过系统,认为是正常的登录。

防止注入需要对用户输入的内容做一些处理,比如替换掉用户输入的 单引号、空格等SQL保留字符;把用户输入的内容采用MD5加密后再同数据库内容对比……
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
可以提前退出“三支一扶”计划吗 能提前退出“三支一扶”计划吗 绒沙金礼品制作工艺 什么叫绒沙金 榖皮巾的意思是什么 IPOD新版本安装会不会影响内存 我的是ipod 4 8G的,我下载了东西以后发现内存是占了,但是显示不出来东西... 为什么我的IPOD下载程序只用了4G却显示用了6.4G 间谍过家家阿尼亚表情包汇总(间谍过家家阿尼亚次子) 关于"化物语"中的女主 战场原黑仪(戦场ヶ原ひたぎ)的1440*900宽屏壁纸... 文件rar格式,怎么解压?怎么安装 手机下来游戏压缩包然后怎么安装 怎么安装 压缩包? 微乐跑得快如何拿好牌 微信群里,一个人发了重要的东西,大家还没看清楚,就撤回了,能在微信电脑版里找到吗 微信网页版能看到微信撤销的语音吗 微信电脑版撤回仍可看 求一个简单的页面与数据库交互代码 华为mate30怎么拍太阳 微信电脑备份可以看到撤回照片吗 微信发错了已撤回,但对方在电脑上上的微信,能看见吗 大家好!请问新华保险的福享金生十年后退保能退多少钱? 新华福享金生满十年退保能拿多少 我买新华福享金生两年,一年22670.00元,现在想退保,能拿回本金多少? 新华保险的福享一生可以随时退保么 中兴mesh怎么关闭 青海湖塔尔寺两日游适合渗透定价策略 如何关闭中兴手机的无障碍关闭模式? 除了海口,还有哪个省会是大家感到陌生,甚至没听过的? 中兴手机总是弹出广告怎么办? 2011年工商银行最新贷款利率?我带了15年15W 为什么土豪富二代不会娶网红只会跟她们玩玩? 还记得收土豪9千万礼物的女主播吗?以身相许嫁给土豪后,两人现状如何? 网红蔡萝莉遭土豪重金要求素颜,卸妆后,网友表示果断取关,你怎么看? 有种“土豪”叫中国宅男,给网红刷了三万五万不在话下,为此你怎么看? 土豪网红的败家人生_by三生思量_txt全文免费阅读 如心所愿网名怎么样? 供应商质量管理体系审核评价表 怎么写 如心所愿起微信名好吗? 如何填写主治医师资质审核评估表 有如心如愿这个成语吗? 你好 你那里有6s推行方案吗? 不可能所有的事情都会如心所愿,所以只能偏向更在乎的! 是什么意思? 医疗器械生产许可证现场检查,企业应建立什么制度? 希望你的所有不期而遇都能开心而至是什么意思? 家装室内设计师工作质量评分表 是什么事都如心所愿吗? 办卫生许可证需要什么资料?需要准备什么? 时光清浅,岁月依旧,年没年末,年初年出,愿一切安好。这句话什么意思? 供应商稽核评分表 (GP)中GP是什么意思