SQL注入攻击及其解决方法

SQL注入攻击:

  当程序中出现了SQL拼接时,当输入的值为jack‘#或者‘jack‘ or ‘1=1时,会让SQL语义发生改变,因为SQL语句中出现了SQL的关键字(# or 1=1),造成数据泄露,系统安全隐患。

SQL语义发生改变的语句例如:

select * from user where username=‘jack‘#‘ and password=‘‘

select * from user where username=‘jack‘ or ‘1=1‘ and password=‘‘

解决SQL攻击:

  利用PreparedStatement对象;

//3,获取带有预编译的传输器
//SQL中包含着?的,叫做SQL骨架。
//? 叫做占位符
String sql = "select * from user where username=? and password=?";
ps = conn.prepareStatement(sql);
//设置参数setString
//第一个参数必须和问号的顺序一致,
//第二个参数指定问号的值
ps.setString(1, name);
ps.setString(2, pwd);

//4,执行SQL
rs = ps.executeQuery();

PreparedStatement优势:

1,防止SQL注入
先把SQL骨架(带有?的一条SQL,?叫做 占位符)发送给数据库服务器,然后再把参数发给服务器。
本质上是由于新对象把sql关键字给屏蔽了,把SQL关键字当做一个普通的文本处理。

2,省略了参数拼接的麻烦,通过?作为占位符,通过setString方法来绑定问号的位置,并且赋值来完成的。

3,提高执行效率
先把SQL骨架缓存起来,当下次要访问相同SQL骨架的业务时,先去缓存中找SQL,缓存中没有的话,再发出SQL语句查询数据库。

原文地址:https://www.cnblogs.com/yikuan-919/p/9519805.html

时间: 2024-10-28 15:13:34

SQL注入攻击及其解决方法的相关文章

SQL注入原理与解决方法代码示例

一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击

网站如何防止sql注入攻击的解决办法

首先我们来了解下什么是SQL注入,SQL注入简单来讲就是将一些非法参数插入到网站数据库中去,执行一些sql命令,比如查询数据库的账号密码,数据库的版本,数据库服务器的IP等等的一些操作,sql注入是目前网站漏洞中危害最大的一个漏洞,受攻击的网站占大多数都是sql注入攻击. sql注入攻击用英语来讲Structured Query Language,在网站的编程语言当中是一种比较另类的网站开发语言,我们网站安全行业通常来讲sql是用来数据库查询的一种网站开发语言,同时也是一种脚本文件的一个文件名,

SQL注入攻击---web安全

一.什么是sql注入呢?         所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击可以拿到

Java学习笔记47(JDBC、SQL注入攻击原理以及解决)

JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步骤: 1.注册驱动 2.获得连接 3.获得语句执行平台 4.执行sql语句 5.处理结果 6.释放资源 1.导入jar包,可以在网上下载到,这里使用的是:mysql-connector-java-5.1.37-bin.jar 注册驱动: package demo; import java.sql.D

PDO方法,SQL注入攻击

<?php //PDO:数据访问抽象层 //dsn:数据源: //带有事务功能: $dsn = "mysql:host=localhost;dbname=mydb"; //造pdo对象 $pdo = new PDO($dsn,"root","123"); //设置为异常模式 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION ); try {  //写SQL语句  $

Web安全篇之SQL注入攻击

在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问题~ 大家早上好!今天由我给大家带来<web安全之SQL注入篇>系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:       第一讲:"纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理.":       第二讲:"实战演练:我们要在互联网上

SQL 注入攻击

一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试.这是安全评估的一个部分,所以尽管我们之前没有使用过SQL注入来渗透网络,但对其概念也相当熟悉了.最后我们在这项任务中大获成功,现在来回顾一下这个过程的每一步,将它记录为一个案例. "SQL注入"是一种利用未过滤/未审核用户输入的攻击方法("缓存溢出"和这个不同),意思就是让应用运行本不应该运行的SQL代码.如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果. 我们记录下

实例讲解 SQL 注入攻击

一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试.这是安全评估的一个部分,所以尽管我们之前没有使用过SQL注入来渗透网络,但对其概念也相当熟悉了.最后我们在这项任务中大获成功,现在来回顾一下这个过程的每一步,将它记录为一个案例. “SQL注入”是一种利用未过滤/未审核用户输入的攻击方法(“缓存溢出”和这个不同),意思就是让应用运行本不应该运行的SQL代码.如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果. 我们记录下了在多次错误的转折后经历的曲折

PHP几个防SQL注入攻击自带函数区别

SQL注入攻击是黑客攻击网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击.SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除.为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes.(php.ini magic_quotes_gpc).如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和