什么是sql注入?sql注入有哪些方式?防止sql注入又有哪些方式(.Net下)

2024-11-06 23:33:20
推荐回答(4个)
回答(1):

所谓SQL注入,其实是程序漏洞,没有什么技术,比如下面的语句就可能被注入
SQL="SELECT * FROM ADMIN WHERE USER='" &REQUEST("USER")& "' AND PASS ='" &REQUEST("PASS")& "'"

别人可以精心设计一个PASS参数提交给你,使得你的SQL完成其它功能,例如PASS的值为:
abc' OR USER='admin

这时候SQL语句是什么样子,你看看:
SELECT * FROM ADMIN WHERE USER='admin' AND PASS='abc' OR USER='admin'

任何密码都可以成功登录。

解决的方法:程序应该判断USER和PASS这些参数里面是否有引号等特殊符号。

上面是一个简单的例子,通过提交精心设计的参数,还可以修改你的数据库。

回答(2):

SQL 语句注入,防止的话:用存储过程或自己编写代码检测

回答(3):

sql注入是一种网络病毒,详细在百渡搜索

回答(4):

sql注入
可以理解为一种编程漏洞,
例如你做了一个登陆界面,后台有一个USER表,
你写了如下SQL语句,
SELECT USERNAME,PASS FROM USER WHERE USERNAME = '"+inputUser+"' AND PASS='"+inputPass+"'

其中,inputUser和inputPass是从你的界面取值,这样只能让不了解这个系统的用户按规则,添正确的值,
如:inputUser = 张三
inputPass=123

如果有人知道你要杳的是什么表,
inputPass的值如下,
inputPass= 123'; DELETE USER;

形式就是如上,只要你的拼出一个完整的字符串,就有可能执行恶意SQL

这就是SQL注入.

防止办法,使用预处理API执行SQL

Java preparedstatement
SQL变成如下形式
SELECT USERNAME,PASS FROM USER WHERE USERNAME = ? AND PASS= ?
preparedstatement.setObject(1,value);
preparedstatement.setObject(2,value);
preparedstatement.executeQuery();

.NET
SELECT USERNAME,PASS FROM USER WHERE USERNAME = :PARAM1 AND PASS= :PARAM1

以上就可以防止SQL注入