MySQL 安全及防止 SQL 注入攻击

这篇具有很好参考价值的文章主要介绍了MySQL 安全及防止 SQL 注入攻击。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

作为研发,有一条铁律需要记住,那就是

永远不要相信用户的数据,哪怕他一再承诺是安全的

SQL 注入式攻击

SQL 注入,就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令

比如有一个表单,用户可以输入 name

<?php 
$name = $_GET['name'];
$dbh->query("SELECT * FROM users WHERE name='{$name}'");

那么当用户输入的 name 为 Python'; DELETE FROM user;' 时会变成什么?

SELECT * FROM users WHERE name='Python'; DELETE FROM user;'';

这条语句运行一下,会发现什么? 我们的 user 表被清空啦,很可怕,对不对

所以我们需要对用户的输入进行过滤处理

例如下面的 PHP 语句,要求用户输入的名称 name 必须是字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间

<?php 
if (preg_match("/^\w{8,20}$/", $_GET['name'], $matches))

    $dbh->query("SELECT * FROM tbl_language WHERE name=$matches[0]");
else
    echo "username 输入异常";

防止 SQL 注入要诀

防止 SQL 注入,我们需要注意以下几个要点

  1. 永远不要信任用户的输入

    对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双 "-" 进行转换等

  2. 永远不要使用动态拼装 SQL ,可以使用 SQL 预处理语句

  3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接

  4. 不要把机密信息直接存放,加密或者 hash 掉密码和敏感的信息

  5. 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

  6. SQL 注入的检测方法一般采取辅助软件或网站平台来检测

防止 SQL 注入

Perl和 PHP 中可以对用户输入的数据进行转义从而来防止 SQL 注入

PHP 中可以使用 PHP_PDO 的 PDO:prepare() 方法来预处理 SQL 语句,然后使用 PDOStatement::bindParam() 方法绑定参数,或者在 PDOStatement::execute() 传入参数来预防 SQL 注入

<?php
$stmt = $dbh->prepare("SELECT * FROM tbl_language WHERE name=?");
$stmt->execute(array$_GET['name']));

LIKE 子句语句中的 SQL 注入

使用 LIKE 子句查询时,如果用户输入的值有 _ 或 %,则会出现下面这种情况

用户本来只是想查询 abcd%,查询结果中却有 abcd_abcdeabcdf 等等

PHP 脚本中,我们首先要使用 addcslashes($name,"%_") 对输入的字符进行转义,然后使用 PHP_PDO 的 PDO:prepare() 方法来预处理 SQL 语句,然后使用 PDOStatement::bindParam() 方法绑定参数,或者在 PDOStatement::execute() 传入参数来预防 SQL 注入文章来源地址https://www.toymoban.com/news/detail-432637.html

$name = 'thon%';
$name = addcslashes($name,"%_");
$stmt = $dbh->prepare("SELECT * FROM tbl_language WHERE name LIKE ? ");
$stmt->execute(array( '%'.$name));

到了这里,关于MySQL 安全及防止 SQL 注入攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP 安全:如何防止PHP中的SQL注入?

    SQL注入防护对于确保数据库的安全性和完整性至关重要。它涉及实施有效措施来阻止将未经授权的 SQL 代码注入应用程序的恶意尝试。开发人员可以利用输入验证和参数化查询等技术来清理用户输入,确保任何潜在的恶意代码都无害。此外,使用预准备语句和存储过程可以通

    2024年04月29日
    浏览(49)
  • 加强Web应用程序安全:防止SQL注入

    数据库在Web应用程序中存储和组织数据时起着至关重要的作用,它是存储用户信息、内容和其他应用程序数据的中央存储库。而数据库实现了高效的数据检索、操作和管理,使Web应用程序能够向用户提供动态和个性化的内容。然而,数据库和网络应用程序之间的通信不畅可能

    2024年02月14日
    浏览(44)
  • Node.js + Mysql 防止sql注入的写法

    关键代码 访问数据库相关代码 一个分页查询人员信息的完整代码,查询语句实现了防止sql注入

    2024年01月16日
    浏览(46)
  • Web安全:SQL注入漏洞测试(防止 黑客利用此漏洞.)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月13日
    浏览(40)
  • Web安全 SQL注入漏洞测试.(可以 防止恶意用户利用漏洞)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2023年04月20日
    浏览(51)
  • 如何通过数据验证防止 Web API 攻击 - Web API 安全指南

    充分的数据保护和用户保密是网页开发者的主要责任。因此,在构建 API 终端时,确保最高可能的安全性至关重要。 应用程序安全是客户端和服务器开发者共同的责任,一方的疏忽可能会造成灾难性后果。统计数据显示,2023 年的数据泄露导致全球超过 800 万个数据记录暴露。

    2024年04月15日
    浏览(40)
  • 网络安全---SQL注入攻击

            SQL 注入是一种代码注入技术,可利用 Web 应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在 Web 应用程序中正确检查时,该漏洞就存在。         许多 Web 应用程序从用户处获取输入,然后使用这些输入构建 SQL 查询

    2024年04月12日
    浏览(50)
  • 「网络安全」SQL注入攻击的真相

    点击此处即可获得282G网络安全学习资料 我们生活在数据的黄金时代。有些公司将其分析为更好的自己,有些公司为了获利而进行交易,没有一家公司因其价值而自由放弃 - 对于他们的业务和犯罪分子。 SQL(结构化查询语言)是一种非常流行的与数据库通信的方式。虽然许多

    2024年02月07日
    浏览(49)
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

    要从MySQL中的表格中选择数据,请使用\\\"SELECT\\\"语句: 示例选择\\\"customers\\\"表格中的所有记录,并显示结果: 注意 :我们使用 fetchall() 方法,该方法从上次执行的语句中获取所有行。 要仅选择表格中的某些列,请使用\\\"SELECT\\\"语句,后跟列名: 示例仅选择name和address列: 如果您只对

    2024年02月05日
    浏览(95)
  • web安全漏洞-SQL注入攻击实验

    实验目的 学习sql显注的漏洞判断原理 掌握sqlmap工具的使用 分析SQL注入漏洞的成因 实验工具 sqlmap是用python写的开源的测试框架,支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP,MAXDB并支持6种SQL注入手段。 实验内容 SQL注入(SQL I

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包