易截截图软件、单文件、免安装、纯绿色、仅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; 
  } 
说明:以上文章大部分来参考网络资料。整理后方便自己的查阅和学习。


相关文档:

MS SQL Server 2008分布式查询MySQL

  近日,俺通过MS SQL Server 2008的链接服务器查询MySQL的数据。其实,俺在多年前就使用过这个,当时是分布式查询Excel表数据,现在,换成异构数据库MySQL。俺以64位系统说明:
   首先,Windows程序访问MySQL数据库需要驱动程序,可以到官方网站下载,俺就是使用Mysql ODBC 5.1 Driver for 64bit,通过数 ......

perl利用内存使用sql语句

 大家好!最近又有了一些模块用法的心得,那就是利用模块使你的内存变成一个虚拟的数据库模式,使你可以在没有数据库的情况下,将txt文件的数据进行 sql语句处理,感觉很新鲜吧,不过这个不用感到惊讶,Perl一直是很完美的,哈哈,那我们就来看看这个神奇吧!
需要安装 模块:
SQl::Library;
DBI 
下面是程序 ......

轉SQL Server 远程链接服务器详细配置

 远程链接服务器详细配置
--
建立连接服务器
EXEC
sp_addlinkedserver
'
远程服务器IP
'
,
'
SQL Server
'
--
标注存储
EXEC
sp_addlinkedserver
@server

=

'
server
'
,
--
链接服务器的本地名称。也允许使用实例名称,例如MYSERVER\SQL1
@srvproduct

=

'
product_name ......

用ADO管理SQL SERVER !

      在软件开发中,常常需要为程序建立Sql Server数据库的运行环境。完成如在SQL Server数据库中建立设备,建立数据库,建立表格,分配权限等功能,如何方便的建立应用程序所需Sql Server环境的数据库环境,而不用启动SQL Enterprise Manager呢?
下面来看: 
  启动VB6.0,新建一个工 ......

MS Sql Server数据库分区

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