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

一个有趣的问题,求大神解释
数据库:一个Uid对应一个Upwd和一个Uname(目前只有两个账户)
一个老同事调戏菜鸟,在登陆界面的密码框里输入了一些不知道什么的东东(密码框有限制20个字符以内),然后我的网页就悲剧了,两个账户的Uname变成了同一个,求解释,求解决办法?
 ps:登陆界面的sql语句:    
         String sql="select * from userinfo where Uid='"+username+"' and Upwd='"+password+"'";
            rs=st.executeQuery(sql);
            if(rs.next()){
                   session.setAttribute("u_name",rs.getString("Uname"));
                   }

------解决方案--------------------
不要用单引号去拼接字符串吧 我觉得应该是这方面的问题
你可以直接在密码框里输入' or 'a'='a 试试  结果肯定是你看到的那种用户名是一个
所以 不要用拼接 用?代替传入参数 然后用setstring什么的赋值

------解决方案--------------------
sql注入了?
------解决方案--------------------
强势围观,貌似很有趣的样子!
------解决方案--------------------
引用:
数据库:一个Uid对应一个Upwd和一个Uname(目前只有两个账户)
一个老同事调戏菜鸟,在登陆界面的密码框里输入了一些不知道什么的东东(密码框有限制20个字符以内),然后我的网页就悲剧了,两个账户的Uname变成了同一个,求解释,求解决办法?
 ps:登陆界面的sql语句:    
         String sql="select * from userinfo where Uid='"+username+"' and Upwd='"+password+"'";
            rs=st.executeQuery(sql);
            if(rs.next()){
                   session.setAttribute("u_name",rs.getString("Uname"));
                   }