常见的SQL注入攻击及其预防方法

作者 : IT 大叔 本文共831个字,预计阅读时间需要3分钟 发布时间: 2020-09-28

方法1:堆积查询

此方法涉及完成一条SQL语句,然后编写一条全新的SQL语句。例如,一个网站让用户输入用户名以查看信息,而SQL语句为“ SELECT * FROM Users WHERE Username ='username'”。如果支持堆叠查询,则用户可以输入“'; SELECT * FROM *;”。并在SQL运行“ SELECT * FROM Users WHERE Username =”; SELECT * FROM *;”时获取整个数据库的内容。

为避免这种情况,如果有选择,则不允许堆叠查询。例如,当使用mysql和php时,使用语句“ mysqli_query”而不是“ mysqli_multi_query”。前者将停止堆积的查询,而后者允许它们。

方法2:基于错误的注入

此方法利用了显示给用户的SQL错误消息。代码有些复杂,但是概念很简单。用户尝试执行几乎肯定会产生错误的操作,例如将表名转换为整数,然后从产生的错误消息中获取信息。一旦用户知道各种表的名称,他们将具有更大的破坏数据库的能力。

要停止此攻击,请确保永远不会向用户显示内部SQL错误。在将SQL错误传递给用户之前,应先对其进行处理,以阻止用户从错误中获取信息。

方法3:基于布尔值的注入

在这种攻击中,用户将各种条件附加到条件语句中。在使用SQL代码“ SELECT * FROM Users WHERE Username ='username'”搜索用户列表的示例中,用户名可以设置为“ myusername”和条件语句 “。如果返回您的用户信息,则条件语句为true。如果不是,则该语句为假。通过执行一系列此类查询,攻击者可以收集有关数据库的各种信息。

为了防止这种攻击(以及大多数SQL攻击),用户输入永远不能作为SQL代码运行。这样做的方法很多,潜在的漏洞级别各不相同,但是最安全的方法是使用准备好的语句。这会将用户输入传递给SQL作为预写语句的参数。这样做可以确保SQL不会将用户输入的内容解释为SQL代码。它将被视为它想要的任何数据类型

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 常见的SQL注入攻击及其预防方法

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论