建设银行网站明细多长时间/广东seo教程

建设银行网站明细多长时间,广东seo教程,动态网站开发的架构,内贸在什么网站做🌟 什么是 SQL 注入? SQL 注入(SQL Injection)是指攻击者利用特殊输入,让数据库执行它本来不应该执行的代码,从而获取或篡改数据。 就像在考试的时候偷偷改题目,让老师改成你想要的内容&#…

🌟 什么是 SQL 注入?

SQL 注入(SQL Injection)是指攻击者利用特殊输入,让数据库执行它本来不应该执行的代码,从而获取或篡改数据。

就像在考试的时候偷偷改题目,让老师改成你想要的内容! 😱


🌟 先来看一个正常的 SQL 查询

假设你的网站有一个登录功能,代码是这样的:

🔹 登录代码

$username = $_GET['username'];  
$password = $_GET['password'];  

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

✅ 这个代码的意思是:
👉 从 users 表里查找 用户名 = $username密码 = $password 的用户。

如果数据库里有这条数据,用户就可以登录!

🌟 用户输入正常数据(正确方式)

假设用户输入:

username = admin
password = 123456

最终SQL语句:

SELECT * FROM users WHERE username = 'admin' AND password = '123456';

✅ 如果 admin 这个用户的密码是 123456,那么数据库会返回这个用户的信息,表示登录成功!

🚨 但如果攻击者输入特殊字符呢?

攻击者可能会这样输入:

username = admin' --
password = (随便填)

那么最终SQL语句变成:

SELECT * FROM users WHERE username = 'admin' -- ' AND password = 'xxxxx';

这里发生了什么?

  • -- 是SQL中的注释符号,它会让后面代码(AND password='xxxxx')变成无效的注释

  • 结果就变成:

    SELECT * FROM users WHERE username = 'admin'

    相当于直接查询 admin 用户,而不检查密码! 😱

  • 这样攻击者就可以绕过密码验证,直接登录 admin 账号!✅

  • 🌟 现实世界的比喻

  • 💡 想象你在银行办理取款业务,柜员要核对你的身份:

  • 正常情况:
    柜员问你:请告诉我你的用户名密码,如果正确,我就给你取钱。

    • 你说:“我是 admin,密码是 123456

    • 银行查了一下,发现你的用户名和密码匹配,于是让你取钱。✅

  • 被攻击的情况(SQL注入):
    攻击者说“我是 admin,但是密码这部分不重要,你不用检查。”

    • 银行糊涂了,以为你就是 admin,直接给你取钱!

    • 🌟 关键点总结

    • 1️⃣ SQL 注入的本质:利用特殊字符破坏 SQL 语句结构,让数据库执行本不应该执行的代码。
      2️⃣ 常见注入方式

    • 单引号 '(破坏 SQL 结构)

    • --(注释掉后续代码)

    • OR 1=1(让查询条件永远成立) 

    • 3️⃣ 为什么 SQL 注入危险?

    • 可以绕过密码验证,直接登录

    • 可以获取数据库里的所有数据(用户信息、密码、银行卡号)

    • 甚至可以删除数据,破坏整个系统! 😱

    • 🌟 2. 什么是预编译(Prepared Statement)?

      🔹 预编译的作用

      预编译(Prepared Statement)的核心思想是: 👉 把 SQL 语句和用户输入的参数分开处理,防止用户输入的数据被当成 SQL 代码执行。

      就像去餐馆点菜时,菜谱是固定的,顾客只能填菜名,不能改动菜单的内容,这样就不会有欺骗行为。


      🔹 普通的 SQL 语句(容易被 SQL 注入攻击)

      🚨 下面是一个 危险的 SQL 代码
    • $name = $_GET['name'];  
      $query = "SELECT * FROM users WHERE name = '$name'";
      $result = $pdo->query($query);

      👆 这里的问题是:

    • $name 直接拼接到 SQL 语句中,如果用户输入了恶意代码,就会被数据库当成 SQL 代码执行,导致 SQL 注入!

    • ✅ 使用预编译(防止 SQL 注入)

      $stmt = $pdo->prepare('SELECT * FROM users WHERE name = ?');
      $stmt->execute([$name]);

      execute([$name]);

      个代码是安全的! 为什么?

          prepare('SELECT * FROM users WHERE name = ?') 这一步先定义好 SQL 语句,但不插入具体的值。

          execute([$name]) 这一步才把 $name 作为普通字符串插入,不会被当成 SQL 代码。

      💡 无论用户输入什么,它都会被当成普通文本,不会影响 SQL 语句本身。

    • 🌟 3. 为什么预编译不能 100% 防 SQL 注入?

      虽然预编译能防止大部分 SQL 注入,但在某些特殊情况下,仍然可能被绕过。
      下面是三个真实案例,让你彻底理解!😱

    • 🚨 案例一:宽字节注入

      🌍 发生场景
      某些数据库(比如 MySQL)在处理GBK 编码时,可能会错误地解析特殊字符,从而导致 SQL 注入。

      💻 代码示例

    • $pdo->query('SET NAMES gbk');  // 设定 GBK 编码
      $var = "\xbf\x27 OR 1=1 /*";    // 特殊构造的字符串
      $query = 'SELECT * FROM test WHERE name = ? LIMIT 1';
      $stmt = $pdo->prepare($query);
      $stmt->execute([$var]);

      ❓ 为什么会有问题?

      1️⃣ \xbf\x27 在 GBK 编码下,可能会被误解析为一个单独的字符
      2️⃣ 剩下的部分 "OR 1=1 /*" 会被数据库当成 SQL 代码执行!
      3️⃣ 这样就变成:

    • SELECT * FROM test WHERE name = '某些字符' OR 1=1 /*

      OR 1=1 永远为真,所以查询会返回所有数据,导致信息泄露! 😱

    • 🚨 案例二:表名注入

      🌍 发生场景
      预编译只能防止SQL参数注入,但如果动态拼接SQL,还是会有风险!😨

      💻 代码示例

    • $dbh = new PDO("mysql:host=localhost;dbname=test", "root", "password");
      $name = $_GET['name'];  // 例如输入:"users; DROP TABLE users;"
      $stmt = $dbh->prepare('SELECT * FROM ' . $name . ' WHERE username = :username');
      $stmt->execute([':username' => $_REQUEST['username']]);

      ❓ 为什么会有问题?

      1️⃣ $name 直接拼接进 SQL 语句,而不是作为参数传入 prepare()
      2️⃣ 攻击者可以输入恶意表名,比如:

    • users; DROP TABLE users;

      3️⃣ 这样 SQL 语句变成:

    • SELECT * FROM users; DROP TABLE users; WHERE username = 'admin'

      🔴 结果:users 表被删除!数据丢失! 😱

    • 案例三:ORDER BY 注入

      🌍 发生场景
      有些 SQL 语句的排序字段不能使用预编译参数,这会导致 SQL 注入。

      💻 代码示例

    • $stmt = $dbh->prepare('SELECT * FROM foo ORDER BY :userSuppliedData');
      $stmt->execute([':userSuppliedData' => $_GET['sort']]);

      为什么会有问题?

      1️⃣ ORDER BY 后面的字段名 不能使用预编译参数
      2️⃣ 攻击者可以输入:

    • id DESC; DROP TABLE foo;

      3️⃣ 这样 SQL 语句变成:

    • SELECT * FROM foo ORDER BY id DESC; DROP TABLE foo;

      4️⃣ 🔴 结果:foo 表被删除!数据库数据被破坏! 😱

      🌟 4. 如何完全防止 SQL 注入?

      虽然预编译是一个很好的安全措施,但它并不能 100% 防止 SQL 注入。
      所以,我们还需要额外的安全措施!👇


      方法 1:严格限制输入格式

      💡 不要让用户输入影响 SQL 结构的内容!
      🔹 例如,限制表名、列名、排序字段只能从“白名单”中选择!

    • $allowedSortFields = ['id', 'name', 'date'];  
      if (!in_array($_GET['sort'], $allowedSortFields)) {  
          die("Invalid input");  // 直接终止,防止 SQL 注入  
      }

      方法 2:使用 ORM 框架

      🔹 ORM(Object-Relational Mapping) 框架(比如 Laravel 的 Eloquent、Doctrine)会自动处理 SQL 语句,默认带有安全检查

      示例:

    • User::where('name', $name)->first();

      ORM 会自动处理 SQL 注入问题,不需要手动写 SQL 语句。

      方法 3:最小权限原则

      🔹 不要使用数据库管理员账户(如 root)运行 SQL 语句! 🔹 为应用创建权限受限的数据库账户,这样即使有 SQL 注入,也不会破坏整个数据库。

      CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'securepassword';
      GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'webapp'@'localhost';

      这样,即使黑客注入了 DROP TABLE users;,也无法执行,因为 webapp 账号没有删除表的权限!😃


      🌟 总结

      预编译是 SQL 防注入的核心方法,但并不 100% 安全。
      SQL 注入绕过的三种方式:

    • 宽字节注入(特殊字符编码问题)

    • 表名注入(拼接动态 SQL )

    • ORDER BY 注入(排序字段不能预编译)
      想要 100% 防 SQL 注入,还需要额外措施!
      最佳安全做法:

    • 严格限制用户输入

    • 使用 ORM 框架

    • 遵循最小权限原则












    •  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/75707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-03-26 学习记录--C/C++-PTA 6-3 求链式表的表长

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 6-3 求链式表的表长 本题要求实现一个函数,求链式表的表长。 函数接口定义: &…

【Linux】Linux_Ubuntu与Windows之间的文件传输

一、Linux终端命令的复制粘贴 1.打开linux 终端,输入以下命令:(注意,需要联网) 2.命令行下载: sudo apt-get autoremove open-vm-tools 3.命令行安装: sudo apt-get install open-vm-tools-…

算法每日一练 (18)

💢欢迎来到张翊尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (18)删除并获得点数题目描述解题思路解题…

VsCode启用右括号自动跳过(自动重写) - 自录制gif演示

VsCode启用右括号自动跳过(自动重写) - 自录制gif演示 前言 不知道大家在编程时候的按键习惯是怎样的。输入完左括号后编辑器一般会自动补全右括号&#xff0c;输入完左括号的内容后&#xff0c;是按→跳过右括号还是按)跳过右括号呢&#xff1f; for (int i 0; i < a.s…

分布式爬虫框架Scrapy-Redis实战指南

引言 在当今数字化的时代背景下&#xff0c;互联网技术的蓬勃兴起极大地改变了旅游酒店业的运营模式与市场格局。作为旅游产业链中的关键一环&#xff0c;酒店业的兴衰与互联网技术的应用程度紧密相连。分布式爬虫技术&#xff0c;尤其是基于 Scrapy 框架的 Scrapy-Redis 扩展…

deepseek(2)——deepseek 关键技术

1 Multi-Head Latent Attention (MLA) MLA的核心在于通过低秩联合压缩来减少注意力键&#xff08;keys&#xff09;和值&#xff08;values&#xff09;在推理过程中的缓存&#xff0c;从而提高推理效率&#xff1a; c t K V W D K V h t c_t^{KV} W^{DKV}h_t ctKV​WDKVht​…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.3前馈网络(FFN)与激活函数(GELU)优化

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.3 前馈网络(FFN)与激活函数(GELU)优化1. 前馈网络(FFN)的架构设计与数学原理1.1 FFN在Transformer中的核心作用2. GELU激活函数的数学特性与优化2.1 GELU的数学形式与近似计算3. 逐行代码实现…

力扣刷题-热题100题-第24题(c++、python)

234. 回文链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/palindrome-linked-list/description/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 数组是连续的存储空间&#xff0c;可以根据索引到达任意位置&#xff0c;链表只能一个个的顺…

调用通义千问实现语音合成并将合成的音频通过扬声器播放

1. 作者介绍 郭建东&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2024级研究生 研究方向&#xff1a;机器视觉与人工智能 电子邮件&#xff1a;1229963266qq.com 高金年&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2024级研究生&…

您的数据是如何出现在暗网上的?

暗网是互联网上的一个隐秘角落&#xff0c;人们可以在那里保持匿名。暗网经常与深网混淆&#xff0c;但它们并不完全相同。 深网是指网络上所有未被搜索引擎索引的内容。这包括电子邮件帐户、私人数据库和付费服务等。这并不违法&#xff0c;只是无法通过简单的 Google 搜索找…

thinkphp漏洞再现

Thinkphp5x远程命令执行及getshell 1、开环境 2、使用工具攻击 开启工具 输入地址&#xff0c;点击漏洞检测 存在漏洞之后&#xff0c;选择漏洞&#xff0c;执行命令 3、也可以执行远程命令 执行命令 ?sindex/think\app/invokefunction&functioncall_user_func_array&…

Day16 -实例:Web利用邮箱被动绕过CDN拿真实ip

本想测试一下全局ping&#xff0c;刚好注册的时候收到了邮件&#xff0c;刚好去做一下复现。 原理&#xff1a;主动让对方站点给我们发邮件&#xff08;注册、修改密码、订阅推送等&#xff09;我们查看邮件原文&#xff0c;原文里存在真实的邮件站点ip 特点&#xff1a;邮件…

网盘解析工具更新,解决了一些bug

解析工具v1.2.1版本更新&#xff0c;本次是小版本更新&#xff0c;修复了一些bug。 之前小伙伴反应的网盘进入文件后不能返回上一级&#xff0c;现在这个bug修复了&#xff0c;已经可以点击了。 点击资源后会回到资源那一级目录&#xff0c;操作上是方便了不少。 增加了检查自…

推荐1款简洁、小巧的实用收音机软件,支持手机和电脑

聊一聊 没想到现在还有人喜欢听广播。 我一直以为听广播必须要用那种小广播机才可以。 原来手机或电脑上也是可以的。 今天给大家分享一款可以在电脑和手机上听广播的软件。 软件介绍 龙卷风收音机 电台广播收音机分电脑和手机两个版本。 电脑端无需安装&#xff0c;下载…

六十天前端强化训练之第三十一天之Webpack 基础配置 大师级讲解(接下来几天给大家讲讲工具链与工程化)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、Webpack 核心概念解析 二、实战&#xff1a;多资源打包配置&#xff08;含完整代码&#xff09; 三、配置深度解析&#xff08;重点部分说明&#xff09; 四、效果演示…

【蓝桥杯】每日练习 Day13

前言 今天做了不少题&#xff0c;但是感觉都太水了&#xff0c;深思熟虑之下主播决定拿出两道相对不那么水的题来说一下&#xff08;其实还是很水&#xff09;。 两道问题&#xff0c;一道是日期问题&#xff08;模拟&#xff09;&#xff0c;一道是区间合并问题。 日期差值 …

理解文字识别:一文读懂OCR商业化产品的算法逻辑

文字识别是一项“历久弥新”的技术。早在上世纪初&#xff0c;工程师们就开始尝试使用当时有限的硬件设备扫描并识别微缩胶片、纸张上的字符。随着时代和技术的发展&#xff0c;人们在日常生活中使用的电子设备不断更新换代&#xff0c;文字识别的需求成为一项必备的技术基础&a…

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)

一、前言 在上一节中&#xff0c;学习了如何使用vLLM来部署Whisper-large-v3-turbo模型。不过&#xff0c;在实际使用时&#xff0c;模型一次只能处理30秒的音频。今天&#xff0c;将结合实际业务&#xff0c;介绍如何处理一段完整的音频&#xff0c;并生成相应的字幕文件。 相…

IDEA批量替换项目下所有文件中的特定内容

文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录&#xff0c;点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏&#xff1a; IDEA 1. 问…

蓝桥杯 临时抱佛脚 之 二分答案法与相关题目

二分答案法&#xff08;利用二分法查找区间的左右端点&#xff09; &#xff08;1&#xff09;估计 最终答案可能得范围 是什么 &#xff08;2&#xff09;分析 问题的答案 和 给定条件 之间的单调性&#xff0c;大部分时候只需要用到 自然智慧 &#xff08;3&#xff09;建…