MySQL实战
作者 | 丁奇出处 | 极客时间《MySQL 实战 45 讲》专栏我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这...
2024.11.12喜欢本文章请关注点赞加转发
如何保护数据免受SQL注入攻击?采取措施保护数据免受基于应用程序的攻击,例如SQL注入。
千万不要相信应用程序用户输入的任何数据,这一点非常重要。用户可以通过使用具有特殊含义的字符(如引号或转义序列)来利用应用程序代码。确保您的应用程序仍然安全,如果用户输入类似于drop DATABASE mysql;
保护数字和字符串数据值。否则,用户可以访问安全数据并提交可能破坏数据或导致服务器负载过重的查询。
保护你的公开数据。攻击会导致浪费服务器资源。保护web表单、URL名称、特殊字符等。
SQL注入的例子:
编写糟糕的应用程序将提供的用户名和密码与用户表中的行进行比较,并确保有一个匹配的行与一行,例如: sql = "select COUNT(*) FROM users WHERE user=‘" + username + "‘ AND pass = ‘" + password + "‘";
如果用户输入“Peter”和“tY*wa8?”L,语句的计算结果为:
select COUNT(*) FROM users WHERE user=‘Peter‘ AND pass = ‘tY*wa8?L‘
如果用户输入用户名和密码abcd和x‘OR 1=1 LIMIT 1;--分隔,语句的计算结果为:
select COUNT(*) FROM users WHERE user=‘abcd‘ AND pass = ‘x‘ OR 1=1 LIMIT 1;-- ‘
检测潜在的SQL注入攻击向量,用户可以通过以下任何一种方式尝试SQL注入:
在网页表格中输入单引号和双引号(" ‘ "and" ")。通过添加%22(" " "),%23(" # ")和%27(" ‘ ")来修改动态url。在数字字段中输入字符、空格和特殊符号,而不是数字。确保应用程序在传递给MySQL之前生成错误或删除这些额外的字符。如果应用程序允许这些字符,则应用程序的安全性可能会受到损害。将此信息传达给应用程序开发人员。
对于防止SQL注入。在应用程序中,永远不要将用户提供的文本与SQL语句连接起来。当执行需要用户提供文本的查询时,请使用参数化存储过程或预处理语句。
存储过程和预处理语句不使用参数执行宏展开。数值参数不允许文本值,例如注入的SQL语法。文本参数将用户提供的值作为字符串进行比较,而不是SQL语法。作者 | 丁奇出处 | 极客时间《MySQL 实战 45 讲》专栏我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这...
2024.11.12MySQL驱动参数你知道多少呢?常见的几个大家应该都见过,如下:参数说明user数据库用户名password用户密码useUnicode是否使用Unicode字符集,如果参数characterEnco...
2024.11.06000:前言对于MYSQL知识的一个初总结001:正文MYSQL数据库特性1.Mysql数据库默认不区分大小写,利用此特性可以进行大小写过正则匹配,举个简单的例子,有的题目中只过滤了select,那么...
2024.11.15大家好啊,我是大田。今天想分享一下数据库MySQL卸载,三步搞定。第一篇MySQL系列:【工具】数据库基本概念及MySQL安装1. 定位数据库的数据文件位置1) 首先我们找到 Mysql安装目录下的 ...
2024.11.15show processlist查看到的线程id和有些表中显示的线程id不一致,其实他们是同一个线程,有一一对应关系,可以通过performance_schema.threads查看直接获取这2列se...
2024.11.13