日期:2014-05-17  浏览次数:21028 次

sql注入的问题,对文本型号的是否只需将单引号替换为双引号?对sql注入有深入了解的进来
asp页面防止sql注入,如果在页面里用拼接sql语句的方式查询数据库:
一般对传出的数字型的参数,只要判断参数为数字就可以很好的防止sql注入了;
但对于传入的字符型的参数,在拼接到sql语句的时候,我的理解是这样的:只需要将参数的单引号替换成双引号就可以了,无需替换其他的字符。因为如果是字符型的,想注入的话必须要输入单引号来拼凑成可以执行的sql语句。

我对sql注入研究不深,不知道对字符型的仅仅替换单引号是不是完全可以防止注入,希望对sql注入有深入研究的兄弟说说你的看法,如果有否定意见,最好能举例说明。不胜感激


------解决方案--------------------
hookee() ( ) 信誉:100 Blog 加为好友 2007-07-05 10:03:24 得分: 0


如果拼接的字段是数字类型xxx.asp?id=123
假设注入 id=1234%20or%201=1;delete%20from%20tbl;
那么拼接后
select * from tbl where id=1234 or 1=1;delete from tbl;

最好就是不要用拼接sql的方式操作数据库,可以用
1.prepared paremeters
2.用ADO Recordset
3.存储过程
---------------------------------------------
请专心看lz的帖--------- "一般对传出的数字型的参数,只要判断参数为数字就可以很好的防止sql注入了 "
已经告诉你数值型不用考虑了


to 楼主:
把一个单引号替换为两个单引号就可以了,不用替换成什么双引号的.
------解决方案--------------------
参考:
http://community.csdn.net/Expert/topic/5439/5439383.xml?temp=.433819
------解决方案--------------------
楼上的 光是列名起的难猜是不行滴。 用join自连接查询的方式 只要知道这个表中的一个列名
就可以拿到表中所有的数据。 不过也有条件限制。 就是支持可以union
所以说 表名也要起的偏僻一点。。

字符型的只要将单引号replace一下应该就不用担心了