Java防止SQL注入
SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法
用户钻了SQL的空子,下面我们先来看下什么是SQL注入:
比如在一个登陆界面,要求用户输入用户名和密码:
用户名: ' or 1=1 --
密 码:
点登陆,如若没有做特殊处理,而只是一条带条件的查询语句如:
String sql="select * from users where username='"+userName+"' and password='"+password+"' "
那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)
这是为什么呢?我们来看看这条语句,将用户输入的数据替换后得到这样一条语句:
select * from users where username='' or 1=1 --' and password=''
为了更明白些,可以将其复制到SQL分析器中,将会发现,这条语句会将数据库的数据全部读出来,为什么呢?
很简单,看到条件后面 username='' or 1=1 用户名等于 '' 或 1=1 那么这个条件一定会成功,然后后面加两个-,这意味着
什么?没错,注释,它将后面的语句注释,让他们不起作用,这样就可以顺利的把数据库中的数据读取出来了。
这还是比较温柔的,如果是执行
select * from users where username='' ;DROP Database (DB Name) --' and password=''
.......其他的您可以自己想象。。。
那么我们怎么来处理这种
相关文档:
--以下文章为转载.
SQL注入漏洞全接触——入门篇
ZDNet 软件频道 更新时间:2007-08-20 作者:CSDN 来源:CSDN
本文关键词:漏洞 SQL Server SQL
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部 ......
数学函数:
1.绝对值
S:SELECT abs(-1) value
O:SELECT abs(-1) value from dual
2.取整(大)
S:SELECT ceiling(-1.001) value
O:SELECT ceil(-1.001) value from dual
3.取整(小)
S:SELECT floor(-1.001) value
O:SELECT floor(-1.001) value from dual
4.取整(截取)
S:SELECT cast(-1.002 as int) value
O ......
昨天我说,用组合索引优化SQL,并不是最优的,这是因为在8亿的表上面有个等价的物化视图,这个物化视图可以代替我在之前在表上面建立的组合索引。
SQL> explain plan for SELECT distinct * from (select
2 (PROD_9005_GDF_WK_SS_FDIM.PROD_4_NAME),
3 PROD_9005_GDF_WK ......
一.视图(VIEW)
定义:视图是一张虚拟的表,其内容是从一张或多张表中查询得来的结果集。
描述:视图是存储在系统目录中的信息,她并没有真正存储数据,而是已存表的投影。视图的属性是按照一个查询的规定从一个或者多个表中导出的,是已存表的过滤器。她是一张“虚表”,从一张表或者多张表中派生出来的,其 ......