易截截图软件、单文件、免安装、纯绿色、仅160KB

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; 
  } 
说明:以上文章大部分来参考网络资料。整理后方便自己的查阅和学习。


相关文档:

SQL分组排序

 
今天遇到个有意思的问题,是一个分组排序的问题,不过要求分组和分组间也要排序,如果这个组内有一条数据是最近更新的,那么这整个组都应该排在前面。
下面以Oracle的HR示例Schema中的employees表为例:
语句按部门分组,分组之间的排序是这样的:如果整个分组中有一个员工的hire_date是最新的,那么这个分组就应 ......

SQL根据已知的年月,计算该月的天数.

 本文是一个技巧文章,介绍SQL根据已知的年月,计算该月的天数.
本文是一个技巧文章,介绍SQL根据已知的年月,计算该月的天数.
declare   @iDays   int 
declare   @dt   varchar(50) 
set   @dt=@Year+'-'+@Month+'-01'
select @iDays=day(dateadd( ......

SQL性能优化(不断总结)


1.查询的模糊匹配
  尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用。
  解决办法:
  其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:
        a、修改前台程序—&mdas ......

SQL Server 2005利用分区对海量数据的处理


超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引 ......

MS Sql Server数据库分区

什么是数据库分区?
数据库分区是一种对表的横向分割,Sql server 2005企业版和之后的Sql server版本才提供这种技术,这种对表的横向分割不同于2000中的表分割,它对访问用户是透明的,用户并不会感觉的表被横向分割了。(2000中的表横向分割是建n个表例如按时间建表每月一个表,表名不同,最后需要做一个大视图)
为什 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号