jsp中防止sql注入的一些基本预防措施
一、啥是sql注入
所谓sql注入简单说就是被人钻了SQL的空子下面举个最简单的例子。
sql 为:"select * from users where username='"+userName+"' and password='"+password+"' "
1、攻击者只要在传入的userName加上'--上面的sql便将username='"+userName+"' 后面的条件全部注释掉。直接验证通过。
2、甚至攻击者只要传入 ' or 1=1 -- 道理也是一样的。
3、sql注入原理推荐个文章,里面有介绍。http://www.nosec.org/2009/0918/59.html
二、解决方法: 过滤掉用户输入中的危险字符
1、第一种采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepareStatement(sql);
preState.setString(1, userName);
preState.setString(2, password);
ResultSet rs = preState.executeQuery();
2、将传入的字符串做过滤.replaceAll(".*([';]+|(--)+).*", " ");
3、js验证:通过js过滤掉客户端提交上来的字符(现在绕过js验证的方法太多不建议采用)
function IsValid( oField ){
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
$sMsg = "请您不要在参数中输入特殊字符和SQL关键字!"
if ( re.test(oField.value) )
{
alert( $sMsg );
oField.value = '';
oField.focus();
return false;
}
说明:以上文章大部分来参考网络资料。整理后方便自己的查阅和学习。
相关文档:
8.2 聚合函数的应用
聚合函数在数据库数据的查询分析中,应用十分广泛。本节将分别对各聚合函数的应用进行说明。
8.2.1 求和函数——SUM()
求和函数SUM( )用于对数据求和,返回选取结果集中所有值的总和。语法如下。
SELECT SUM(column_name) ......
一、关于CREATE TABLE tab1 (字段名 TEXT)中,字段名为“a.a.a或a.a.b”时,提示:
“字段定义语法错误”
答:在字段名字外面加上“[ ]”就可以了!
二、创建一个以ListCtrl第一列为EXCEL第一行的表结构 和 插入一个以ListCtrl第N列为EXCEL第二行的表结构
  ......
SQL Server 2000的安全配置在进行SQL Server 2000数据库的安全配置之前,首先必须对操作系统进行安全配置,保证操作系统处于安全状态。然后对要使用的操作数据库软件(程序)进行必要的安全审核,比如对ASP、PHP等脚本,这是很多基于数据库的Web应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似&ld ......
什么是数据库分区?
数据库分区是一种对表的横向分割,Sql server 2005企业版和之后的Sql server版本才提供这种技术,这种对表的横向分割不同于2000中的表分割,它对访问用户是透明的,用户并不会感觉的表被横向分割了。(2000中的表横向分割是建n个表例如按时间建表每月一个表,表名不同,最后需要做一个大视图)
为什 ......
定义标量变量语法
在PL/SQL语块中定义变量和常量的语法如下
indentifier [CONSTANT] datatype [NOT NULL] [:=|DEFAULT expr]
indentifier 用于指定变量或常量的名称
CONSTANT:用于指定常量。当定义常量时,必须指定它的初始值,并且其数值不能改变
datatype:用于指定变量或常量的数据类型。
NOT NULL: 用于强 ......