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

asp.net登陆问题
是不是,用参数化(比如存储过程),这样写代码,就能有效去掉带有非法字母比如',如果用sql语句拼接的话,还要过滤下非法字母比如',txtName.replace(''','"'),还能防注入,比如输个什么根本不存在的账号和密码也能登陆进去,请问是这样理解的吗

------解决方案--------------------
推荐楼主不要用字符串的拼接方法
------解决方案--------------------
参数化 简单的来说是把所有传入的“东西”当字符串来处理而不是 “关键字”

------解决方案--------------------
被注入的地方, 无非就是 查询, 和 ie地址里输入。 而 SQL 语句 每个关键字必须得有空格分隔。如果你在接受查询或者 URL的时候 。 去处 空格、/**/、%20、' 把这4个去排除我估计没什么了
------解决方案--------------------
要查询数据库的,,不可能登录进去的吧
------解决方案--------------------
拼接SQL 没什么, 关键字 必须有空格的。 而故意注入SQL语句 要在查询的地方,或者 URL 转发的时候去添加 关键字+空格+条件 。 你在接受url转发的时候, 排除 空格、/**/、%20、单引号。 就可以了,
------解决方案--------------------
百度下,什么叫SQL注入,看过后,在看你现在的登录问题!
------解决方案--------------------
参数化sql语句。

C# code

                sqlStr = "select * from vw_member_info_web where mobile = :mobile and password = :pwd or lic_no = :mobile and password = :pwd";
                OracleParameter[] prams = { new OracleParameter(":mobile", userName), new OracleParameter(":pwd", DESEncrypt.Encrypt(pwd)) };