什么是SQL注入

2025-05-24 21:34:48

1、首先介绍什么是SQL注入。SQL注入是指在编程中SQL语句中参数可以通过客户端传递到数据库中执行,由于对传递内容过滤不严谨,导致SQL执行出现非预期结果。现在举例说明SQL注入。

2、我们现在要做一个用户登录框。可以输入用户名和密码,如果用户名和密码正确就可以成功登录,否则登录失败。界面如下:

什么是SQL注入

3、在验证用户名和密码中可能会出现如下语句。

什么是SQL注入

4、语句中用户名和密码会客户端传入参数。如果正常输入,那么用户名和密码正确,就会提示【真不错,恭喜你又过了一关!】。

什么是SQL注入

5、问题出现了。此段代码中对用户输入没有进行任何的过滤和字符转换。那如果我们用户名和密码都传入 【' or '' = '】(不包含中括号,相信我,此用户名密码绝对不是保存的正确用户名和密码),会出现什么样的结果呢?

什么是SQL注入

6、结果就是一样会提示恭喜又过了一关。为什么会这样呢?那么现在我们来分析一下。在后台程序,我们用SQL 【select * from 2user where yhm='"稆糨孝汶;& a &"' and mima='"& b &"'】 验证用户名和密码。其中a和b为用户填写的用户名和密码,不明白的可以参看第二张图片整个后台验证代码。

什么是SQL注入

7、如果我们输入的用户名和密码都为【guo衡痕贤伎sange】,那么组合后SQL结果是【select * from 2user where yhm=媪青怍牙'guosange' and mima='guosange'】。 但是如果我们用户名和密码输入为【' or '' = '】,那么组合后SQL结果为【select * from 2user where yhm='' or '' = '' and mima='' or '' = ''】。这个SQL其中有【or '' = ''】,这个判断导致整条SQL语句的Where条件永远为True,导致可以查出表【2user】的所有记录。从而登录成功。 喜欢尝试的朋友也可以试试在用户名输入【' or '' --】,密码随意输入也可以达到效果。

什么是SQL注入

8、这就是SQL注入。通过输入一些特殊字符,改变了你SQL语句本来的目的,达到额外的效果。那么我们应该怎么预防呢?其实很简单,只要我们禁止用户输入一些特殊字符,或者后台对这些特殊字符进行转换,或者SQL语句都写为存储过程,这样就可以避免被SQL注入攻击了

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢