有什么方法可以实现验证密码账号时不被例如:a'or'1'='1类似的用户名所欺骗 最好写成一个存储过程,先select count(用户名) as num from 用户表 where 条件,如果num<>1,肯定不对(当用户表记录确实为1时是个漏洞)。不要在页面中直接写SQL。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用PreparedStatement来替换 Statement ,然后用参数传递的方法,就可以解决了 baitianhai(hong) , peacock_king(孔雀王) 你们两位对自己说的能否再明白点? 我怎么觉得好象没什么区别,还是可能被骗过 严重同意 baitianhai(hong).这种方式不可能被骗过去了的. 还有另外一个做法,就是把所有的'号替换成两个单引号''这是使用SQL语句的-->基本<---做法.同时也是安全的 (不仅仅是对密码而言!!!) 写一个类,功能是替换客户端发送过来的字串中的非法字符。比如接收到的字串是:a'or''1'='1那么程序就把它改为:a''or''''1''=''1前提是你的sql语句中字串用的引号是“单引号”,那么像上面那样改动之后,“单引号”不再会影响你的操作了,因为数据库服务器会把你提供的字串里的两个紧连着的“单引号”当作一个“单引号”来用。 用PreparedStatement代替Statement的原理如下:PreparedStatement prst=con.prepareStatement("select * from book where a=?");prst.setString(1,"a'or''1'='1");//这里把字串传给sql语句,传递时字串其实相当于a\'or\'\'1\'=\'1,当然不会有问题喽。 处理一下读取的字符串 str = str.replaceAll("'","''"); 分框架的页面怎么在登录的时候加等待提示呢? 用maven创建maven-archetype-webapp工程.导入eclipse中不能直接识别为web项目. 论坛开发的技术储备 Java程序连接mysql时出错是为什么? jsp连接oracle9i的问题、 请大家讲一下分页显示的实现方法 IIS6.0+TOMCAT6.0整合后无法访问网站 js中方法调用问题 做个小调查: 大家平常用resin作服务器还是tomcat? 为什么在调用JSP文件是,WINDOWS200弹出下载文件框呢?? 调用存贮过程 关于JSP中的replace的使用方式
你们两位对自己说的能否再明白点? 我怎么觉得好象没什么区别,还是可能被骗过
这种方式不可能被骗过去了的.
那么程序就把它改为:a''or''''1''=''1前提是你的sql语句中字串用的引号是“单引号”,那么像上面那样改动之后,“单引号”不再会影响你的操作了,因为数据库服务器会把你提供的字串里的两个紧连着的“单引号”当作一个“单引号”来用。
PreparedStatement prst=con.prepareStatement("select * from book where a=?");
prst.setString(1,"a'or''1'='1");
//这里把字串传给sql语句,传递时字串其实相当于a\'or\'\'1\'=\'1,当然不会有问题喽。
str = str.replaceAll("'","''");