...有......有造句:MYSQl 特殊字符

来源:百度文库 编辑:高校问答 时间:2024/03/29 22:26:46
都说MYSQL会自动过滤特殊的字符 ,这样会给程序带来什么影响呢?
我输入了一堆特殊的字符,未经过任何处理,但是往MYSQL里添加还是从库里读出显示在页面上都没有问题,这是为什么呢?怎么能看出不处理特殊字符然后引发的漏洞呢?
谢谢!
前辈 我现在就是用SQL来从库里添加和读出,我试了前辈说的单引号,但是读出和写入还是没有问题 。我不知道我还有什么没有注意到。谢谢

你直接用MySQL当然不会有问题
所谓漏洞是这样产生的。。。
你写SQL代码这么写(以ASP为例,PHP同理,但是更难利用)
SQL="select * form user where username='" & request("username") & "' and password='" & request("password") & "'"
那么这样我如果在页面中用户名和密码填入'or''='
得到的结果是什么呢?SQL语句变成
select * from user where username='' or ''='' and password='' or ''=''
这样无论数据库中用户名密码是什么,此句永远返回数据库中的第一个用户,此时,你就非法登陆到网站上了,这就是流传的SQL Injection,SQL注入,主要写的特殊字符是指' " ;这种字符,他们会打乱SQL语句本身的逻辑,使服务器错误的执行

MYSQL不会自动过滤特殊的字符。
正因为不会所以才会产生漏洞。如果在一些软件或网站界面上向mysql输入单引号的话,它也会简单的判断为执行语句的一部分,这样就可以利用一些简单的排列而非法访问数据库。
比如上面的哥们提起的
select * from user where username='' or ''='' and password='' or ''=''
其中的''=''代表的是'真'
那么本来需要判断用户名=?密码=?两个判断都必须为真才能进入网站页面或者程序,结果变成了用户名=?或者'真' 并且 密码=?或者'真'
不管用户名密码有没有添对反正可以得到结果为'真',这样就非法登陆了系统并且可以造成破坏。