MySQL 及 SQL 注入简要介绍

本文介绍了SQL注入的概念,它是通过用户输入恶意SQL命令欺骗服务器执行,常见于缺乏数据合法性校验的网页程序。讨论了SQL注入攻击的原因,并提供了防止注入的要点,如不相信用户输入、避免动态SQL、使用权限有限的数据库连接等。还提到了SQL注入的检测工具和防御措施。
摘要由CSDN通过智能技术生成

如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。

本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。

SQL注入概念

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。简单来说,SQL注入就是一种通过操作输入(可以是表单,可以是get请求,也可以是POST请求等)来插入或修改后台SQL语句达到代码执行从而进行攻击的技术。

SQL注入攻击产生的原因

出现SQL注入攻击漏洞的主要原因是:许多网页程序员在编写代码的时候,没有对用户输入数据的合法性进行严格的判断和过滤,从而导致应用程序存在该漏洞。

我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。

以下实例中,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间:

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{
   $result = mysqli_query($conn, "SELECT * FROM users 
                          WHERE username=$matches[0]");
}
 else 
{
   echo "username 输入异常";
}

让我们看下在没有过滤特殊字符时,出现的SQL情况:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值