MYSQL 及 SQL 注入
文章目录
- 前言
- 什么是sql注入
- 防止SQL注入
- Like语句中的注入
- 后言
前言
hello world欢迎来到前端的新世界
😜当前文章系列专栏:Mysql
🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹
💖感谢大家支持!您的观看就是作者创作的动力
什么是sql注入
如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。
本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。
以下实例中,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间:
if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{$result = mysql_query("SELECT * FROM users WHERE username=$matches[0]");
}else
{echo "username 输入异常";
}
让我们看下在没有过滤特殊字符时,出现的SQL情况:
// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
mysql_query("SELECT * FROM users WHERE name='{$name}'");
以上的注入语句中,我们没有对 n a m e 的变量进行过滤, name 的变量进行过滤, name的变量进行过滤,name 中插入了我们不需要的SQL语句,将删除 users 表中的所有数据。
在PHP中的 mysql_query() 是不允许执行多个SQL语句的,但是在 SQLite 和 PostgreSQL 是可以同时执行多条SQL语句的,所以我们对这些用户的数据需要进行严格的验证。
防止SQL注入,我们需要注意以下几个要点:
- 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
- 永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
- 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
- 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
- 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
- sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
防止SQL注入
在脚本语言,如Perl和PHP你可以对用户输入的数据进行转义从而来防止SQL注入。
PHP的MySQL扩展提供了mysql_real_escape_string()函数来转义特殊的输入字符。
if (get_magic_quotes_gpc())
{$name = stripslashes($name);
}
$name = mysql_real_escape_string($name);
mysql_query("SELECT * FROM users WHERE name='{$name}'");
Like语句中的注入
like查询时,如果用户输入的值有"“和”%",则会出现这种情况:用户本来只是想查询"abcd",查询结果中却有"abcd_"、“abcde”、“abcdf"等等;用户要查询"30%”(注:百分之三十)时也会出现问题。
在PHP脚本中我们可以使用addcslashes()函数来处理以上情况,如下实例:
$sub = addcslashes(mysql_real_escape_string("%something_"), "%_");
// $sub == \%something\_
mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");
addcslashes() 函数在指定的字符前添加反斜杠。
语法格式:
addcslashes(string,characters)

后言
创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力
相关文章:
MYSQL 及 SQL 注入
文章目录 前言什么是sql注入防止SQL注入Like语句中的注入后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现…...
古埃及金字塔的修建
从理论上说,古埃及人完全有能力设计并建造出充满各种奇妙细节的胡夫金字塔,但后世还是不断涌现出质疑之声,原因倒也简单,那就是胡夫金字塔实在太大了。据推算,整座金字塔使用大约230万块巨石,总质量可达约5…...
Android 13.0 系统settings系统属性控制一级菜单显示隐藏
1.概述 在13.0的系统rom定制化开发中,系统settings的一级菜单有些在客户需求中需要去掉不显示,所以就需要通过系统属性来控制显示隐藏, 从而达到控制一级菜单的显示的目的,而系统settings是通过静态加载的方式负责显示隐藏,接下来就来实现隐藏显示一级菜单的 功能实现 2.…...
STM32 寄存器配置笔记——USART配置中断接收乒乓缓存处理
一、概述 本文主要介绍如何配置USART接收中断,使用乒乓缓存的设计接收数据并将其回显在PC 串口工具上。以stm32f10为例,配置USART1 9600波特率。具体配置参考上一章节STM32 寄存器配置笔记——USART配置 打印。 乒乓缓存的设计应用场景:当后面…...
第二十一章 解读XML与JSON文件格式(工具)
XML XML tree and elements 将XML文档解析为树(tree) 我们先从基础讲起。XML是一种结构化、层级化的数据格式,最适合体现XML的数据结构就是树。ET提供了两个对象:ElementTree将整个XML文档转化为树,Element则代表着…...
Web 自动化神器 TestCafe(三)—用例编写篇
一、用例编写基本规范 1、 fixture 测试夹具 使用 TestCafe 编写测试用例,必须要先使用 fixture 声明一个测试夹具,然后在这个测试夹具下编写测试用例,在一个编写测试用例的 js 或 ts 文件中,可以声明多个测试夹具 fixture(测试…...
Redis 基本命令—— 超详细操作演示!!!
内存数据库 Redis7—— Redis 基本命令 三、Redis 基本命令(下)3.8 benchmark 测试工具3.9 简单动态字符串SDS3.10 集合的底层实现原理3.11 BitMap 操作命令3.12 HyperLogLog 操作命令3.13 Geospatial 操作命令3.14 发布/订阅命令3.15 Redis 事务 四、Re…...
Linux:centOS常用命令
CentOS是一种基于Red Hat Enterprise Linux(RHEL)的开源操作系统,因此与其他基于Linux的系统共享很多相似的命令。以下是一些在CentOS上常用的命令 件和目录操作: ls: 列出目录内容。cd: 切换目录。pwd: 显示当前工作目录。mkdir: 创建目录…...
数据结构-二叉树(1)
1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个特殊的结点&…...
SpringBoot——国际化
优质博文:IT-BLOG-CN 一、Spring 编写国际化时的步骤 【1】编写国际化配置文件; 【2】使用ResourceBundleMessageSource管理国际化资源文件; 【3】在页面使用ftp:message取出国际化内容; 二、SpringBoot编写国际化步骤 【1】创…...
shell 条件语句 if case
目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 (全真才为真) 或 (一真即为真) 常见条件 双中括号 [[ expression ]] 用法 &…...
C语言:写一个函数,实现3*3矩阵的转置(指针)
分析: 在主函数 main 中,定义一个 3x3 的整型数组 a,并定义一个指向整型数组的指针 p。然后通过循环结构和 scanf 函数,从标准输入中读取用户输入的 3x3 矩阵的值,并存储到数组 a 中。 接下来,调用 mov…...
STL pair源码分析
STL pair源码分析 pair是STL中提供的一个简单的struct,用来处理类型不同的一对值,是非常常用的数据结构。这一对值是以public的形式暴露出来的,直接通过first和second就能访问。我们以MSVC提供的STL源码为例,分析pair的具体实现。…...
【开源】基于Vue和SpringBoot的农家乐订餐系统
项目编号: S 043 ,文末获取源码。 \color{red}{项目编号:S043,文末获取源码。} 项目编号:S043,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核…...
MyBatis 操作数据库(入门)
一:MyBatis概念 (1)MyBatis 💗MyBatis是一款优秀的持久层框架,用于简化JDBC的开发 (2)持久层 1.持久层 💜持久层:持久化操作的层,通常指数据访问层(dao),是用来操作数据库的 2.持久层的规范 ①…...
JVM——垃圾回收器(G1,JDK9默认为G1垃圾回收器)
1.G1垃圾回收器 JDK9之后默认的垃圾回收器是G1(Garbage First)垃圾回收器。 Parallel Scavenge关注吞吐量,允许用户设置最大暂停时间 ,但是会减少年轻代可用空间的大小。 CMS关注暂停时间,但是吞吐量方面会下降。 而G1…...
多模态——使用stable-video-diffusion将图片生成视频
多模态——使用stable-video-diffusion将图片生成视频 0. 内容简介1. 运行环境2. 模型下载3. 代码梳理3.1 修改yaml文件中的svd路径3.2 修改DeepFloyDataFiltering的vit路径3.3 修改open_clip的clip路径3.4 代码总体结构 4. 资源消耗5. 效果预览 0. 内容简介 近期,…...
springboot(ssm网络相册 在线相册管理系统Java(codeLW)
springboot(ssm网络相册 在线相册管理系统Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0)…...
邮箱发送短信的多种方式
第一种:邮箱验证方法: 导入依赖: <!-- mail依赖(发送短信的依赖) --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> &l…...
R语言——taxize(第五部分)
taxize(第五部分) 3. taxize 文档中译3.71. nbn_synonyms(从 NBN 返回具有给定 id 的分类群名称的所有同义词)3.72. ncbi_children(在 NCBI 中搜索类群的子类群)3.73. ncbi_downstream(检索 NCB…...
Python MCP模板的“最后一公里”难题:K8s ServiceMesh集成、gRPC透明代理、证书自动轮转——全链路演示
第一章:Python MCP模板的企业级定位与架构全景Python MCP(Model-Controller-Plugin)模板并非通用Web框架的变体,而是专为企业级中台系统设计的可扩展服务骨架。它聚焦于解耦业务模型、控制逻辑与插件化能力扩展,适用于…...
如何将数据从小米传输到三星?完整教程
从小米手机换到三星设备似乎很麻烦,尤其是在传输所有重要数据的时候。好在有几种可靠的方法可供选择,包括三星的智能切换功能。但是三星智能切换功能能兼容小米吗? 在本指南中,我们将解答这个问题,并探索如何轻松高效…...
利用快马平台快速搭建stm32f103c8t6最小系统板LED闪烁原型
最近在做一个嵌入式小项目,用到了经典的stm32f103c8t6最小系统板。作为嵌入式开发新手,最头疼的就是搭建开发环境和写各种初始化代码。不过这次尝试用InsCode(快马)平台后,整个过程顺畅多了,分享下我的经验。 项目背景 stm32f103c…...
告别粗糙模型:3DReshaper点云重建、平滑与精准测量的实战指南
1. 为什么你的点云模型总是粗糙不平? 每次处理点云数据时,最让我头疼的就是重建后的模型表面总是坑坑洼洼,像月球表面一样。这个问题困扰了我整整三个月,直到发现了3DReshaper这个神器。你可能也遇到过类似情况:花大价…...
如何让你的第三方鼠标在macOS上重获新生?Mac Mouse Fix让普通鼠标体验提升300%
如何让你的第三方鼠标在macOS上重获新生?Mac Mouse Fix让普通鼠标体验提升300% 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是…...
YOLO系列算法改进 | C2PSA改进篇 | 融合CAFR跨光谱注意力特征细化模块 | 以极低计算代价增强多光谱特征判别性,突破复杂光照与小目标检测瓶颈 | AAAI 2026
0. 前言 本文介绍CAFR(Cross-spectral Attention Feature Refinement)跨光谱注意力特征细化模块,并将其集成到ultralytics最新发布的YOLO26目标检测算法中,构建C2PSA_CAFR创新模块。CAFR是一种基于跨光谱交叉注意力的轻量级特征细化机制,通过显式的对象感知线索引导多光谱…...
如何快速安装和配置Pop Shell:面向初学者的完整教程
如何快速安装和配置Pop Shell:面向初学者的完整教程 【免费下载链接】shell Pop!_OS Shell 项目地址: https://gitcode.com/gh_mirrors/sh/shell Pop Shell是一款功能强大的窗口管理扩展,专为提升Linux桌面操作效率设计。本教程将带您逐步完成Pop…...
AI赋能前端设计:使用快马平台智能生成旅行博客网站首页
最近尝试用AI辅助开发一个旅行博客网站首页,整个过程比想象中顺利很多。作为一个经常需要快速产出前端页面的开发者,这种智能生成代码的方式确实带来了不少便利。下面记录下我的实践过程和一些思考。 需求分析与AI沟通 首先需要明确页面的核心模块&…...
OpenClaw跨平台文件处理:千问3.5-35B-A3B-FP8实现图片转Excel数据表
OpenClaw跨平台文件处理:千问3.5-35B-A3B-FP8实现图片转Excel数据表 1. 从截图到结构化数据的真实需求 上周整理电商商品资料时,我遇到了一个典型问题:供应商发来的200多张商品参数截图,需要手动录入到Excel表格中。传统OCR工具…...
零代码玩转Qwen3-TTS:WebUI界面操作,轻松克隆声音做配音
零代码玩转Qwen3-TTS:WebUI界面操作,轻松克隆声音做配音 1. 引言:声音克隆技术的新选择 如果你曾经想过为自己的视频配音,或者需要批量生成语音内容,但苦于没有专业录音设备和配音演员,Qwen3-TTS的WebUI界…...
