sql注入 mysql 执行命令 sql注入以及解决的办法

我们以前很可能听过一个词语叫做SQL注入攻击,其是威胁我们系统安全的最危险的因素之一,那么到底什么是SQL注入攻击呢?这里我会用一个最经典最简单的例子来跟大家解释一下:
众所周知,我们的sql语句都是有逻辑的,例如下面这句:


这句超级简单吧,我们都知道,这句最常用的是在登陆的时候,来查询用户输入的账号和密码匹配不匹配,来确定用户是否可以登陆的,大体上一看好像没啥问题,但是呢,假如我是一名黑客,我可以用一种巧妙地方式来登陆你这个系统,我账号随意输入一个,密码我输入一个 1 ‘or’ 1’='1 什么意思呢?请看下面这个语句:


这一句是啥意思呢?
我的账号输入的是asasas,乱输的,但我的密码输入的是1 ‘or’ 1’=‘1 ,最后在数据库里查询的上面这句,其实是一句恒等式,为什么这么说呢?where条件后面有一个and 还有一个or,我们都知道and是且,or是或,所以整个语句的条件其实是名字为asasas且密码为1或者’1’等于’1’,这里就很好笑了,字符串1永远等于字符串1啊!所以后面的where条件是一个恒等式,表所有的行都符合字符串1等于字符串1这个条件,又是或的关系,所以所有的行全部匹配,全部被搜索出来,这样再用行数来判断用户是否能登陆已经根本不行了,因为查出来的是所有行。就类似于下面的句子:


注意第二句,改写成第三句后大家应该能看懂了,第三句肯定会查询出来所有的行。
既然现在大家基本了解了SQL注入攻击,那我们要怎么办才能防止这种攻击发生呢?
第一种方式大家都很容易想到,那就是特殊字符匹配,首先大多数系统不会允许用户输入特殊字符 ',- - 之类的,这可以解决一部分SQL注入问题,但是目前最有效最简单的方法是参数化查询语句来防止SQL注入,大家可能看得一脸懵逼,什么是参数化查询语句?没关系,请看下面的代码:


这就是一段经典的参数化sql语句执行,可能大家觉得这种方式和我们去拼接字符串执行看起来没什么差别,实际上,这两种方式差别非常大,其中最重要的差别就在于这种方式会将执行计划重用,大家可能又要问什么是执行计划重用,执行计划重用是数据库的一种机制,其预编译sql语句,就类似于一个模板,以后执行的话就改改传入参数,就不需要再次编译了,举个简单的例子,刚才我们的:


第一句就相当于一个执行计划,它是编译产生的一个模板,确定以后数据库没有特殊情况就再也不会去编译这一句,语意就确定了,只是参数一直在变,这样能加快数据库执行的速度,重用执行计划就是重复使用这一个语意来执行数据库语句,再来看我们的第四句,第四句明显语意发生了变化,需要数据库重新进行编译,但实际上,其语意变化并不是我们想看到的,所以我们只需要将其强制性的按照原先的语意进行执行,便是我们所想看到的结果,所以,参数化sql的作用就在这里,具体sql参数化后执行的具体语句四什么样子的,大家可以自行百度,但是一定是用到了sp_executesql这个关键字,这个关键字就是用来做强制重用执行计划的,所以,大家以后在后台写sql语句拼接时,尽量多使用sql参数化的方式,可以大大提高安全性。

如何快速有效的解决SQL注入问题:

安全加速(Secure Content Delivery Network,SCDN)是德迅云安全推出的集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案。已使用内容分发网络(CDN)或全站加速网络(ECDN)的用户,购买服务后可为加速域名一键开启安全防护相关配置,全方位保障业务内容分发。

Web攻击防护Web防火墙

  • 有效防御 SQL注入、XSS攻击、命令/代码执行、文件包含、木马上传、路径穿越、恶意扫描等OWASP TOP 10攻击。专业的攻防团队7*24小时跟进0day漏洞,分析漏洞原理,并制定安全防护策略,及时进行防护。
  • 提供智能语义解析功能,在漏洞防御的基础上,增强SQL注入和XXS攻击检测能力。
  • AI检测和行为分析,通过对德迅云积累海量日志进行学习和训练输出多种Web安全防护模型,对用户多请求的多元因子进行智能分析,有效提高检出率,降低误报率;通过信息孤岛、行为检测分析,识别恶意攻击源,保护网站安全。

应用层DDoS防护

  • 威胁情报库:通过大数据分析平台,实时汇总分析攻击日志,提取攻击特征并进行威胁等级评估,形成威胁情报库。
  • 个性化策略配置:如请求没有命中威胁情报库中的高风险特征,则通过IP黑白名单、访问频率控制等防御攻击。
  • 日志自学习:实时动态学习网站访问特征,建立网站的正常访问基线。
  • 人机校验:当请求与网站正常访问基线不一致时,启动人机校验(如JS验证、META验证等)方式进行验证,拦截攻击。
  • 对Slow Headers攻击,通过检测请求头超时时间、最大包数量阈值进行防护。
  • 对Slow Post攻击,通过检测请求小包数量阈值进行防护。.

合规性保障

  • 用户可以对HTTP协议字段进行组合,制定访问控制规则,支持地域、请求头、请求内容设置过滤条件,支持正则语法。
  • 记录所有用户访问日志,对访问源进行TOP N,提供趋势分析,可以根据需要提供日志下载功能。
  • 采用强制静态缓存锁定和更新机制,对网站特定页面进行保护,即使源站相关网页被篡改,依然能够返回给用户缓存页面。
  • 对response报文进行处理,对响应内容和响应进行识别和过滤,根据需要设置数据防泄漏规则,保护网站数据安全。

HTTP流量管理

  • 可以设置源IP或者特点接口访问速率,对超过速率的访问进行排队处理,减缓服务器压力。
  • 可以根据业务需要对请求头和响应头进行处理,可进行请求头替换或者敏感信息隐藏设置。

安全可视化

  • 默认提供Web安全攻击报表、CC攻击防护报表、用户访问统计报表和自定义规则命中报表,满足业务汇报和趋势分析需求。
  • 提供全量日志查询和下载功能,可以通过OpenAPI接口获取实时日志或离线日志信息。
  • 提供基于均值和峰值带宽统计信息,提供攻击带宽和正常占比,随时关注业务状况。提供多种组件,了解业务监控和核心指标变化情况。

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

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

相关文章

STM32之九:ADC模数转换器

目录 1. 简介 2. ADC 2.1 逐次逼近型寄存器SAR 2.2 ADC转换时间 3 ADC框图 3.1 8 bit ADC0809芯片内部框图 3.2 ADC框图 3.2.1 注入通道和规则通道 3.2.2 单次/连续转换模式 3.2.3 扫描模式 3.2.4 外部触发转换 3.2.5 数据对齐 3.2.6 模拟看门狗 4. 总结和ADC驱…

前端写得好和写得差有什么区别?

前端开发的质量对用户体验、页面性能、代码维护性以及整个项目的成功有着直接的影响。前端写得好与写得差之间的区别可以从以下几个方面来看: 用户体验: 写得好:页面加载速度快,交互流畅,布局合理,响应迅速…

MYSQL ODBC驱动安装时的注意事项

今天想使用MYSQL的ODBC驱动连接数据库。 安装的时候遇到一个大坑,在这里记录一下。 window 64位的操作,要安装64位驱动,这个大家都知道了。 有以下的问题要注意区别的。 1 、windows是64位的,但是开发软件是32位的。 这个时候…

OpenStack Yoga版安装笔记(七)glance练习补充

1、练习场景说明 在OpenStack Yoga版安装笔记(五)中,glance已经在controller node虚拟机上安装完成,并且已经成功拍摄了快照。 此时,controller node虚机已经安装了keystone、keystone DB、glance、glance DB、OpenSta…

决策树的概念

决策树的概念 决策树是一种监督学习算法,主要用于分类任务。它通过构建一棵树结构模型来进行预测,其中每个内部节点表示一个特征属性上的判断条件,每条边代表一个判断结果对应的分支,而叶节点则代表最终的类别标签。 应用领域 …

MySQL中的MVCC(多版本并发控制)

MySQL中的MVCC(多版本并发控制) MySQL中的多版本并发控制(MVCC)是一种重要的机制,它允许多个事务并发地读取和修改数据库,同时保持数据的一致性和隔离性。MVCC通过维护数据的多个版本,使事务能…

Leetcode滑动窗口的使用

1.滑动窗口 文章目录 1.滑动窗口1.1 什么是滑动窗口?1.2 解题思路1.3 扩展 1.1 什么是滑动窗口? 滑动窗口是一种处理数组或序列数据时常用的数据结构和算法思想。在计算机科学中,它通常涉及在数组上设置一个可变的窗口,该窗口可以…

PCL-基于FPFH的SAC-IA结合ICP的点云配准方法

目录 一、相关方法原理1.凸包方法2.FPFH特征描述3.SAC-IA概述4.ICP概述 二、实验代码三、实验结果 一、相关方法原理 点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合&…

【java技术】xxl-job的实现

Xxl-Job 是一个轻量级的分布式任务调度平台,它支持定时任务的创建、管理、执行和监控。Xxl-Job 的设计理念是简单易用、轻量级、高性能,适合于微服务架构下的任务调度场景。 Xxl-Job 的实现原理涉及到几个关键组件和技术细节。下面是 Xxl-Job 的核心组件…

构建智能运维系统:创新架构与效率优化

随着信息技术的迅猛发展,企业对于运维效率和服务质量的要求越来越高。智能运维系统的设计和实施,不仅能够提升系统可靠性和响应速度,还能有效降低成本和人力投入。本文将深入探讨智能运维系统的架构设计原则和关键技术,为企业在运…

数据结构重置版(概念篇)

本篇文章是对数据结构的重置,且只涉及概念 顺序表与链表的区别 不同点 顺序表 链表 存储空间上 物理上一定连续 逻辑上连续,但物理上不一定连续…

MYSQL(2) 高级查询

文章目录 概述高级查询基础查询条件查询范围查询判空查询模糊查询分页查询查询后排序分组查询 小结 概述 接上篇,上篇写到增删改查。这篇继续。 高级查询 基础查询 -- 全部查询 select * from student; -- 只查询部分字段 select sname, class_id from student;…

.env.local 配置本地环境变量 用于团队开发

.env.local 用途:.env.local 通常用于存储本地开发环境中的环境变量。这些变量可能包括敏感数据或特定于单个开发者的设置,不应该被提交到版本控制系统中。优先级:在大多数框架中,.env.local 文件中的变量会覆盖其他 .env 文件中…

Java唯一订单编号生成

在Java中生成唯一的订单编号通常需要结合时间戳、随机数和/或序列号等元素来确保唯一性。下面是一个简单的示例,使用当前时间的毫秒值加上一个随机数来生成订单号。为了简化,我们将使用​​java.util.UUID​​类来生成一个全局唯一的UUID,并将…

分类模型的完整流程及Python实现

1、加载函数和数据集 import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt cancer…

linux系统查历史cpu使用数据(使用sar 查询cpu和网络占用最近1个月历史数据)。

一 sar 指令介绍 在 Linux 系统中,sar 是 System Activity Reporter 的缩写,是一个用于收集、报告和保存系统活动信息的工具。它是 sysstat 软件包的一部分,提供了丰富的系统性能数据,包括 CPU、内存、网络、磁盘等使用情况&am…

Jdk有哪些版本

JDK(Java Development Kit)是Java编程语言的软件开发工具包,其版本随着Java语言的不断发展而更新。以下是JDK的一些主要版本及其相关信息: JDK 8(发布于2014年3月):引入了一系列新功能,如Lambda表达式、函数式接口、Stream API和新的日期/时间API等。是Java历史上一个…

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN

在SQL中,JOIN操作是连接两个或多个数据库表,并根据两个表之间的共同列(通常是主键和外键)返回数据的重要方法。其中,LEFT JOIN(左连接)、RIGHT JOIN(右连接)和INNER JOIN…

《JavaEE篇》--多线程(2)

《JavaEE篇》--多线程(1) 线程安全 线程不安全 我们先来观察一个线程不安全的案例: public class Demo {private static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {//让count自增5W次…

HarmonyOS网络请求的简单用法,HttpUtil简单封装

请求网络获取数据 点击按钮发送一个post请求,发送一条string由于此处的返回result.data本身就是一个string,因此不需要转换类型 Button(请求网络).margin({ top: 10 }).fontSize(24).fontWeight(FontWeight.Bold).onClick(() > {httpRequestPost(http…