广告
返回顶部
首页 > 资讯 > 数据库 >MySQL长字符截断的实现示例
  • 868
分享到

MySQL长字符截断的实现示例

MySQL长字符截断MySQL字符截断 2023-03-24 16:03:51 868人浏览 安东尼
摘要

Mysql超长字符截断又名"sql-Column-Truncation",是安全研究者Stefan Esser在2008 年8月提出的。 在mysql中的一个设置里有一个sql_mode选项,当sql

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长字符截断内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL长字符截断的实现示例

本文链接: https://www.lsjlt.com/news/201207.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作