喜欢本文章请关注点赞加转发
如何保护数据免受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语法。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~