文档章节

SQL 注入

passionfly
 passionfly
发布于 2015/02/17 01:09
字数 360
阅读 17
收藏 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
128
0
网站mysql防止sql注入攻击 3种方法总结

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

网站安全
10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部