第一种: 若登陆者用户填:abc'or'1'='1 密码填:11 则系统实际运作的SQL是这样的,语句已经变为: sql="SELECT user FROM members WHERE USER = 'abc'or'1'='1' and password='11'" ~~~~~~~~ 留意下划线部分,登陆者已经成功骗过user关键字,剩下的只是猜password值,如果适巧是11,那么密码也就碰中了。 这种登陆方法危害一般,用户只需注册一个合法帐号,随便得到一个密码以后就可以用乱七八糟的帐号搞乱了。 第二种: 用户填:'or' 密码填:11 语句变成 sql="SELECT user FROM members WHERE USER = ''or'' and password='11' " ~~~~~~~~~ 这样系统会认为登陆者为数据库中第一个密码为11的用户 第三种: 用户密码都填:'or' 语句变为: sql=SELECT user FROM members WHERE USER = ''or'' and password=''or'' ~~~~~~~~~ ~~~~~~~~~ 用户密码都“通吃”了,这时系统会认为登陆者为数据库记录的最前一位用户,而这位用户很可能就是admin(admin指的是具体权限,并不是帐号) 。这样风险就更大了。 这里只是一般情况,具体的风险还与后期的session认证相关。
记得采纳啊