SQL注入 基础防御

文件读写与防御手段详解


1. 路径的重要性

在文件的读取和写入过程中,路径至关重要。无论是读取还是写入操作,都必须明确文件的路径。


1.1 什么是魔术引号(Magic Quotes)?

大白话解释:
PHP 的 magic_quotes_gpc 是一个自动转义功能:
当用户通过 GET/POST/Cookie 传入数据时,PHP 会自动给单引号 '、双引号 "、反斜杠 \、NULL 字符加上转义符 \,避免特殊字符破坏 SQL 语句。
核心配置(php.ini):
; 开启(默认旧版本常为On) magic_quotes_gpc = On ; 关闭(PHP7+已移除,推荐彻底关闭) magic_quotes_gpc = Off
开启后的效果:

  • 输入 ' → 被转义为 \'
  • 输入 " → 被转义为 \"
  • 输入 \ → 被转义为 \\

1.1.1 优缺点

  • 优点:可一定程度上防止注入攻击。
  • 缺点 :
    • 很多项目会选择关闭,因其影响项目移植性和性能。
  • 该机制容易被绕过,实际防护效果有限。

2. 常见防御手段

为了方便我们更快地理解这个防御手段的原理,我们可以在源代码里看看是怎么运行的

简单来说,就是服务器给到GET下,然后把id存在这个变量下,最后让sql语句执行,这样没有任何过滤,就会让我们想传什么就传什么

2.1 内置函数的数据类型过滤

  • 可以通过编程语言的内置函数,对传入的数据类型进行严格判断,防止非法注入。

    这样可以看出来有很多的限定词
    示例(以 PHP 为例):
php 复制代码
if (is_int($id)) { // 只执行数字类型的查询 } else { echo "你输入的数据不正经"; }

通过上述方式,只有纯数字的 ID 才会被处理,其他类型的数据会被过滤掉。


2.2 关键字过滤

  • 利用字符串替换函数过滤掉敏感关键字,防止 SQL 注入等攻击。
    示例(以 PHP 为例):
php 复制代码
$id = str_replace("select", "", $id);

这样可以过滤掉用户输入中的 select 关键字,阻止恶意 SQL 语句的执行。


2.3 其他防御手段

  • 除了上述基础防御,还可以借助安全防护软件(如 WAF、安全狗、宝塔等)进行更高级的安全防护。
  • 这些软件能够有效拦截和检测多种攻击方式,提升系统整体安全性。
相关推荐
时间售卖铺41 分钟前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw1 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社2 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙2 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3763 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02144 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川4 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组4 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw344 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go5 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型