我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL长字符截断的实现示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL长字符截断的实现示例

mysql超长字符截断又名"SQL-Column-Truncation",是安全研究者Stefan Esser在2008 年8月提出的。

在MySQL中的一个设置里有一个sql_mode选项,当sql_mode设置为default时,即没有开启STRICT_ALL_TABLES选项时(MySQLsql_mode默认即default),MySQL对插入超长的值只会提示warning,而不是error,这样就可能会导致一些截断问题。

新建一张表测试,表结构如下(MySQL5.1):

CREATE TABLE USERS(
id int(11) NOT NULL, //长度为7
username varchar(7)NOT NULL,
password varchar(12)NOT NULL , 
)

分别插入以下SQL语句(注入提示消息)。

①插入正常的SQL语句。

mysql> insert into users(id,username,password)values(1,'admin','admin');//成功插入,无警告,无错误
 
Query OK,1 row affected(0.00 sec)

②插入错误的SQL语句,此时的"admin "右面有三个空格,长度为8,已经超过了原有的规定长度。

mysql> insert into users(id,username,password)values(2,'admin       ','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)

③插入错误的SQL语句,长度已经超过原有的规定长度。

mysql> insert into users(id,username,password) values(3,'admin    x','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)

MySQL提示三条语句都已经插入到数据库,只不过后面两条语句产生了警告。那么最终有没有插入到数据库呢?执行SQL语句查看一下就知道了。

mysql> select username from users;

可以看到,三条数据都被插入到数据库,但值发生了变化,此时在通过length来取得长度,判断值的长度。

mysql> select length(username)from users where id =1 ;

可以发现,第二条与第三条数据的长度为7,也就是列的规定长度,由此可知,在默认情况下,如果数据超出列默认长度,MySQL会将其截断。

但这样何来攻击一说呢?

面查询用户名为'admin'的用户就知道了。

mysql> select username from users where username='admin';

只查询用户名为admin的用户,但是另外两个长度不一致的admin用户也被查询出,这样就会造成一些安全问题,比如,有一处管理员登录是这样判断的,语句如下:

$sql = "select count(*) from users where username='admin' and password='*******;

假设这条SQL语句没有任何注入漏洞,攻击者也可能登录到管理页面。假设管理员登录的用户名为 admin,那么攻击者仅需要注册一个"admin”用户即可轻易进入后台管理页面,像著名的WordPress就被这样的方式攻击过。

到此这篇关于MySQL长字符截断的实现示例的文章就介绍到这了,更多相关MySQL长字符截断内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL长字符截断的实现示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL长字符截断的实现示例

mysql超长字符截断又名"SQL-Column-Truncation",是安全研究者Stefan Esser在2008 年8月提出的。在MySQL中的一个设置里有一个sql_mode选项,当sql_mode设置为default时,即没有
2023-03-24

MySQL长字符截断如何实现

本篇内容主要讲解“MySQL长字符截断如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL长字符截断如何实现”吧!MySQL超长字符截断又名"SQL-Column-Truncatio
2023-07-05

MySQL 字符串拆分实例(无分隔符的字符串截取)

无分隔符的字符串截取 题目要求 数据库中字段值:实现效果:需要将一行数据变成多行实现的sqlSELECT LEFT(SUBSTRING('P1111',help_topic_id+1),1) AS num FROM mysql.help_t
2022-05-30

MySQL中字段的实际长度的实现示例代码

目录1. 对于字符类型字段2. 对于二进制类型字段总结在mysql中,字段的实际长度(即存储数据的实际字节数)可能因数据类型和存储的具体内容而异。对于字符类型(如CHAR, VARCHAR, TEXT等)字段,实际长度取决于存储的字符串长度
MySQL中字段的实际长度的实现示例代码
2024-09-12

SQL的substring_index()用法实例(MySQL字符串截取)

目录1.substring_index函数的语法及其用法(1)语法:substring_index(string,sep,num)(2)用于截取目标字符串。2.实例(1)从某字段截取目标字符串。(2)与cast函数结合使用截取某字符串并转为
2023-01-13

mysql函数之截取字符串的实现

目录一、mysql截取字符串函数二、mysql截取字符串的一些栗子mysql索引从1开始一、mysql截取字符串函数1、left(str,length) 从左边截取length2、right(str,length)从右边截取lengt
2022-08-14

Linux Shell 截取字符串的方法示例

shell中截取字符串的方法很多${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var:start} ${var:0-sta
2022-06-04

python中lstrip()截掉字符的示例分析

这篇文章主要介绍python中lstrip()截掉字符的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、说明lstrip() 方法用于截掉字符串左边的空格或指定的字符。2、语法str.lstrip([cha
2023-06-15

Python求字符串的长度示例代码

这篇文章主要介绍了Python求字符串的长度,求一个字符串的长度,在main函数中输入字符串,并输出其长度,文中给大家介绍了Python计算字符串长度的函数,需要的朋友可以参考下
2023-02-05

shell 判断字符串是否存在数组中的实现示例

语法格式: [[ "${array[@]}" =~ "字符串" ]] 示例:#!/bin/sh ##数组 array=( address base cart company store )# $1 如果存在,输出 $1 exists,$1w
2022-06-04

java 字符串截取的实例详解

java 字符串截取的实例详解题目 在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,
2023-05-31

Java截取字符串的几种方法示例

众所周知java提供了很多字符串截取的方式,下面这篇文章主要给大家总结介绍了关于Java截取字符串的几种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-15

MySQL实现字符串截取的方法有哪些

本篇内容主要讲解“MySQL实现字符串截取的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL实现字符串截取的方法有哪些”吧!前言在后端开发过程中与数据库打交道乃是家常便饭,有时
2023-06-29

Golang 分割字符串的实现示例

本文主要介绍了Golang 分割字符串的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-17

Shell 字符串拼接的实现示例

1. 字符串声明概述字符串的基本操作脚本 1# 声明字符串 str01="str01" echo ${str01}# 单引号也可以 # 不过后面的例子, 通常是用 双引号, 具体原因, 以后会解释 str02='str02' echo ${
2022-06-04

编程热搜

目录