首页 分享 避免mysql注入漏洞

避免mysql注入漏洞

来源:花匠小妙招 时间:2025-01-05 11:43

最新推荐文章于 2024-10-31 11:30:50 发布

童伟强 于 2021-01-19 07:25:32 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

导语:近年来数据库注入漏洞出现率是很高的,owasp排名也在前10当中。大多数都是由于开发人员缺乏安全意识造成了注入漏洞。学习信息安全技术,不仅要学会漏洞利用,也需要我们有修补漏洞的能力,来提高应用的安全性。常用来预防数据库注入的方案大致有本文中的三种。

一、预处理语句及参数绑定

预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。

预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

预处理语句的工作原理如下:

1.预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:

8df37c06d04051e7171dbebba08af642.png

2.数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。

3.执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

下面放一个预编译参数绑定的demo

5db91c36210468c3702c9f4ee89c3b6f.png

二、存储过程

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

存储过程的创建和调用

存储过程就是具有名字的一段代码,用来完成一个特定的功能。

创建的存储过程保存在数据库的数据字典中。

存储过程的应用参考:https://www.runoob.com/w3cnote/mysql-stored-procedure.html

概论来源:https://www.runoob.com/w3cnote/mysql-stored-procedure.html

三、过滤用户输入

关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。此时需要我们取控制外部的输入,过滤其中不合法、有危害的内容。

1,使用PHP 函数对输入内容过滤。如

mysql_real_escape_string() 这个函数会对一些例如单引号、双引号、反斜杠等特殊字符添加一个反斜杠以确保在查询这些数据之前,用户提供的输入是干净的

addslashes()这个函数的原理跟mysql_real_escape_string()相似。但是当在php.ini文件中,“magic_quotes_gpc“的值是“on”的时候,就不要使用这个函数。magic_quotes_gpc 的默认值是on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。你可以使用get_magic_quotes_gpc()函数来确定它是否开启。

2,使用正则表达式过滤输入。

3,采用白名单机制,只允许指定的输入内容。

相关知识

web安全手动sql注入
自动化SQL注入工具——Sqlmap
MySQL 数据库命名及SQL语句书写规范详解
MySQL常见问题与解决方案详述
杰奇cms mysql查询
Mysql重点知识
MySQL数据库进程生命周期管理及优化策略解析
MySQL if else相关函数
MySQL优化笔记(三)
基于SSM框架的在线订花系统开发与Mysql数据库应用

网址: 避免mysql注入漏洞 https://www.huajiangbk.com/newsview1455940.html

所属分类:花卉
上一篇: 名贵的哪里有中药材种植培育基地
下一篇: 防止花中毒

推荐分享