文档章节

SQL 注入

passionfly
 passionfly
发布于 2015/02/17 01:09
字数 360
阅读 19
收藏 0

例如:String sql="select * from usert where name='"+usernameInput+"' and password='"+pwdinput+"'";
这句是判断当uesrname和password条件都成立时,才会显示结果。
就是用如下的字符串拼接而成

String sql="select * from usert where username='"
+usernameInput
+"' and password='"
+pwdinput

+"'";

在输入用户名hh,密码输入下面的代码,
pwd' or '1'='1
在数据库报务器相当于执行这样的SQL语句:
select * from usert where name='hh' and password='pwd' or '1'='1' ; --这个语句不管前面的条件是否成立,后面的语句总是为真,因此where 条件语句总是成立。
所以就可以跳过前面用户名和密码的判段。
这样就不安全
       //正常的SQL查询语句    
      String sql="select * from usert where name='"+userinput+"' and password='"+pwdinput+"'";
      //userinput用户输入的字符串
      String userinput="hh";
      //pwdinput接收用户输入的字符串
      String pwdinput="pwd' or '1'='1";
这种不安全的情况是在SQL语句在拼接的情况下发生

 

这了主防范这这样”SQL注入安全“可以用预编译解决:

String sql= "insert into userlogin values(?,?)";
  try {
   PreparedStatement ps=conn.prepareStatement(sql);
    for(int i=1;i<100;i++){
    ps.setInt(1, i);
    ps.setInt(2, 8888);
    ps.executeUpdate();
   }
   ps.close();
   conn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }

这样,不管用户输入是什么,数据库服务器总认为是一个值,而SQL语句是相同的不会重复编译,也不会编译新的SQL语句,所以不管用户怎么输入,都不会产生"SQL注入安全"

















本文转载自:http://blog.sina.com.cn/s/blog_6106a4870100fkpb.html

共有 人打赏支持
passionfly
粉丝 14
博文 106
码字总数 76465
作品 0
西安
私信 提问
关于SQL 注入

1 SQL注入案例 案例1: 某网站后台管理平台测试环境 *:50052/csop/main.do 在登录界面用户名输入 system' or '1'='1 ,密码随意输入.之后输入验证码,点击登录,提示登录出错,后访问上方提供的网...

周翔
2016/08/24
44
0
mybatis 学习笔记(二):mybatis SQL注入问题

mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在...

希希里之海
08/23
0
0
SQL注入 (1) SQL注入类型介绍

SQL注入 SQL注入介绍与分类 1. 什么是sql注入 通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 2. sql注入类型 按照注入点类型来分...

xuthus5
08/09
0
0
Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误。其实sql注入漏洞就是一个。作...

长平狐
2012/11/12
144
0
网站mysql防止sql注入攻击 3种方法总结

mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如何防...

网站安全
10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Eos如何删除钱包

在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。 学习EOS应用开发要选这个:【EOS智能合约与...

geek12345
2分钟前
0
0
js操作时间

获取当前时间 function getSystemDate(){ var systemDate = new Date(); // 获取当年 var year = systemDate.getFullYear(); // 获取当月 (月+1是因为js中......

简心
9分钟前
0
0
区块链开发教程推荐

区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区...

笔阁
9分钟前
0
0
菜单menuView总结

1、FTPopOverMenu

_____1____
20分钟前
1
0
MyEclipse教程:Web开发——部署和测试Web项目

MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制。用户还可以获得要检查的示例项目。在本教程中,用户将学习如...

电池盒
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部