请问'or 我用JAVA.Swing编了一个登陆界面一兄弟貌似在密码框里输入了这些,就直接进去了.那该如何避免呢、?我得SQL写的就是("select * from login where username='"+name+"' and password='"+pw+"'");

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 05:43:44

请问'or 我用JAVA.Swing编了一个登陆界面一兄弟貌似在密码框里输入了这些,就直接进去了.那该如何避免呢、?我得SQL写的就是("select * from login where username='"+name+"' and password='"+pw+"'");
请问'or
我用JAVA.Swing编了一个登陆界面一兄弟貌似在密码框里输入了这些,就直接进去了.
那该如何避免呢、?我得SQL写的就是("select * from login where username='"+name+"' and password='"+pw+"'");

请问'or 我用JAVA.Swing编了一个登陆界面一兄弟貌似在密码框里输入了这些,就直接进去了.那该如何避免呢、?我得SQL写的就是("select * from login where username='"+name+"' and password='"+pw+"'");
这个是sql注入式攻击
注入式攻击的类型
可能存在许多不同类型的攻击动机,但是乍看上去,似乎存在更多的类型.这是非常真实的-如果恶意用户发现了一个能够执行多个查询的办法的话.
如果你的脚本正在执行一个SELECT指令,那么,攻击者可以强迫显示一个表格中的每一行记录-通过把一个例如"1=1"这样的条件注入到WHERE子句中,如下所示
SELECT * FROM wines WHERE variety = 'lagrein' OR 1=1;'
这本身可能是很有用的信息,因为它揭示了该表格的一般结构(这是一条普通的记录所不能实现的),以及潜在地显示包含机密信息的记录.
一条更新指令潜在地具有更直接的威胁.通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子
UPDATE wines SET type='red','vintage'='9999' WHERE variety = 'lagrein'
通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子
UPDATE wines SET type='red','vintage'='9999 WHERE variety = 'lagrein' OR 1=1;'
最危险的指令可能是DELETE-这是不难想像的.其注入技术与我们已经看到的相同-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子
DELETE FROM wines WHERE variety = 'lagrein' OR 1=1;'
现在知道了没?因为你写的程序不严谨啊.