Servelt学习:SQL注入漏洞及其避免方法

原创 2012年03月23日 19:49:07

SQL注入漏洞是指执行查询语句时在正常的查询语句之后加入 or 1='1'

例如将语句select * FROM [Students].[dbo].[User] where name='admin' and passwd='123'改写为

select * FROM [Students].[dbo].[User] where name='admin' and passwd='123' or 1='1'时便可以查询出数据表中全部内容(甚至name与passwd值可以随意乱填)

正常情况时得到正确的查询结果:

用户名或密码错误则无法获得查询结果

而在正常的查询语句之后加入or 1='1'却可以得到整个表的查询结果

黑客有可能利用SQL漏洞对网站进行攻击。其可以在用户名称栏中随意输入字符,密码栏中输入XXX' or 1='1便可以进入网站。

例如:

(数据库中无该用户)

 

(由于SQL漏洞,页面成功跳转)

 

解决方法:

不要用户名和密码同时进行验证,而是通过用户名去查询数据库,返回一个密码。然后用该密码与用户输入密码进行比较,如果相同则用户合法,否则为非法用户。

将查询语句:

ps=ct.prepareStatement("select top 1 * from [Students].[dbo].[User] where name='"+u+"'and passwd='"+p+"'");
rs=ps.executeQuery();
      if(rs.next())
       {
       
       //跳转到welcome
       res.sendRedirect("Wel?user="+u+"&pass="+p);
       //HttpSession hs=req.getSession(true);
       //hs.setAttribute("uname",u);
       }else
      {
       res.sendRedirect("login");//写需要跳转的servlet的那个url
      }


改为:

	ps=ct.prepareStatement("select top 1 passwd from [Students].[dbo].[User] where name='"+u+"'");
    		rs=ps.executeQuery();
    	                 if(rs.next())
    		{
    			String dbPasswd=rs.getString(1);
    			System.out.println(dbPasswd);
    			 if(dbPasswd.equals(p))
    		  
    			 {
    			 	 System.out.println(dbPasswd);
    			 	 res.sendRedirect("Wel?user="+u+"&pass="+p);       
    			     HttpSession hs=req.getSession(true);       
    			     hs.setAttribute("uname",u);  
    			 }
    		
    		
    		}else//说明用户名不存在
    		{
    			res.sendRedirect("login");//写需要跳转的servlet的那个url
    		}


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SiteServer 3.4.4 逻辑漏洞导致SQL注入及修复方法

今天特别发现SiteServe CMS( 3.4.4 )网站根目录多了一个asp文件,我就意识网站可以被挂马了!马上排查,终于在后台发现多了一个blue用户名的超级管理员。我猜想可能是SiteServ...

Web开发常见的几个漏洞解决方法 ---SQL注入

平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面...

怎样避免上线网站遭受DDOS攻击,XSS攻击,SQL漏洞,脚本注入?

过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement..  ------解决方案----------------------------------------------...

sql注入漏洞学习

  • 2013-05-23 17:27
  • 24KB
  • 下载

黑马程序员--ADO.NET学习之SQL注入漏洞攻击

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 登录判断:select * fr...

黑马程序员--学习笔记之SQL注入漏洞攻击

---------------------   Windows Phone 7手机开发    .Net培训  期待与您交流! ---------------------- 1、SQL注入漏洞攻击...

通过DVWA学习SQL注入漏洞

此篇文章作为本人的学习小笔记,有任何不足之处望各位大牛多多指教~ SQL注入漏洞作为OWASP TOP10中重要的一部分,可见其安全性的危害有多大。简单地说,SQL注入就是通过构建特殊的具有SQL语法...
  • SKI_12
  • SKI_12
  • 2017-02-21 12:17
  • 1311

由response.setContentType()方法开始谈JSP/Servelt上传下载文件

原文:http://blog.csdn.net/feichexia/article/details/7105741             http://zhangjunhd.blog.51cto....

servelt 的学习文件

  • 2011-09-19 12:56
  • 654B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)