日期:2014-05-19  浏览次数:20426 次

用户登录的问题,大家帮忙啦!
我看到书上一些介绍用户登录的界面时,大部分都有一个UserDB类,但是怎么找这个类也找不到。
        而且他们做登录时不直接用SQL语句来获取输入框中的值,也就是说并不是如下:    
      select   *   from   login   where   username=   Textbox.text(不知道对不对,大概如此了)而是用了一些参数   如:
      select   *   from   login   where   username=@name
        然后在sqlcommand中用了个参数来传递输入框中的值:如:sqlcommand.parameter.add( "@name ",......);
sqlcommand.parameter( "@name ").value=textbox.text;
这样来做的,为了防止sql注入式攻击。
        我所想不明白的是:他们是把用户名和密码一起在数据库中查出来的,那样的语句是:
select   *   from   login   where   username=Textbox1.text   and   password==Textbox.text
        我想这样的话攻击是因为条件语句里有个and,   如果我们通过提取用户所输入的用户名来查询密码,然后把查出来的密码和用户所输入的密码来比较,这样的话可以避免攻击吗?
        还有就是,如果能正确登录,那么登录之后的页面是不是要跟登录叶面有一定的关系呢?肯定得有吧,但是那个网页的url应该怎样表示呢?用户可能只把登录后的页面的url打出来就能登录吗?
        就是说:网易上登录邮箱时,在网页url后面加了jsp?username=...这样的话,如果把用户名打上能不能直接登录阿?当然网易是jsp做的。
        小弟初学制作网站知识,所以问题比较多,请大家多多指教,帮忙解决上面的疑问!


------解决方案--------------------
就是说:网易上登录邮箱时,在网页url后面加了jsp?username=...这样的话,如果把用户名打上能不能直接登录阿?当然网易是jsp做的。
-----------------------
session是独有的。保存在服务器上。
------解决方案--------------------
我想这样的话攻击是因为条件语句里有个and, 如果我们通过提取用户所输入的用户名来查询密码,然后把查出来的密码和用户所输入的密码来比较,这样的话可以避免攻击吗?
你的比那个and好些.
使用session
------解决方案--------------------
我想这样的话攻击是因为条件语句里有个and, 如果我们通过提取用户所输入的用户名来查询密码,然后把查出来的密码和用户所输入的密码来比较,这样的话可以避免攻击吗?
=======================================================================
最简单的SQL注入

如果界面上有两个文本框是用来登录的,你的SQL语句可能如下

string strSQL = "select * from [Users] where usename = ' " + TextBox1.Text.Trim() + " ' and password = ' " + TextBox2.Text.Trim() + " ' ";

假设你的用户名和密码是 "aa ", "aa " (双引号内)
则出来的SQL语句如下
select * from [Users] where username = 'aa ' and password = 'aa '

但是如果用户的输入如下 用户名 "XX ' or 1 = 1 -- "密码不填
则出来的SQL语句如下
select * from [Users] where username = 'XX ' or 1 = 1 -- ' and password = 'aa '

由于条件中多了1 = 1,则无论如何都会登陆成功了

为了避免SQL注入,最简单的办法是使用参数或存储过程
------解决方案--------------------
我还是比较喜欢用参数传递,感觉蛮爽的.我也听别人说,有参数传递的安全性比较高.
------解决方案--------------------
你使用用户名一样可以被注入