免费注册 查看新帖 |

Chinaunix

  平台 申博游戏下载 博客 文库
12下一页
最近访问板块 发新帖
查看: 88115 | 回复: 12
打印 上一主题 下一主题

mysql中"set character_set_client=BINARY"的作用到底是什么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-01-15 20:36 |只看该作者 |倒序浏览
rt,为了防止宽字节,很多资料上都说可以在客户端设置“set character_set_client=BINARY”,但是这句话的含义到底是什么呢?假如我目前客户端的程序是这么设置的:
<?php

mysqli_query($conn, "set character_set_connection=GBK,set character_set_results=GBK,set character_set_client=BINARY");

...
...
?>





论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
2 [报告]
发表于 2018-01-16 15:27 |只看该作者
本帖最后由 seesea2517 于 2018-01-16 16:45 编辑

没怎么用过php,不过看着应该就用 set names 来统一设置三者字符集就可以了。
你这个设置是客户端单独用不同的字符集,二进制字符集就是不做转换,直接存储、传输字节内容。由于你的配置里连接用的是 GBK,那么传到客户端来的数据也就用 GBK 来解释了。

BINARY:二进制字符集相关说明:https://dev.mysql.com/doc/refman/5.7/en/charset-binary-set.html
php 连接设置的FAQ:https://dev.mysql.com/doc/refman ... gui-not-display-cjk

论坛徽章:
0
3 [报告]
发表于 2018-01-16 16:21 |只看该作者
@seesea2517 谢谢了!如果用“set names GBK”的话,是存在宽字节注入漏洞的。比如发起请求"http://sbyxxz.psb828.com/index.php?a=%df'"。经服务端转义后,a的值会变成%df%5c',而%df%5c是一个汉字,这相当于把单引号给逃离出来了,可以发起sql注入攻击。
如果设置“character_set_client=BINARY”,即使“不做转换、直接存储”,那么mysql在解析sql之前,sql中a的内容还是%df%5c',按照这个逻辑,按说还是存在漏洞的。因此还是想不明白在防御攻击的角度上,这个binary为什么能防住。

论坛徽章:
0
4 [报告]
发表于 2018-01-16 16:23 |只看该作者
@seesea2517 谢谢了!如果用“set names GBK”的话,是存在宽字节注入漏洞的。比如发起请求:
  1. http://sbyxxz.psb828.com/index.php?a=%df'
复制代码

经服务端转义后,a的值会变成%df%5c',而%df%5c是一个汉字,这相当于把单引号给逃离出来了,可以发起sql注入攻击。
如果设置“character_set_client=BINARY”,即使“不做转换、直接存储”,那么mysql在解析sql之前,sql中a的内容还是%df%5c',按照这个逻辑,按说还是存在漏洞的。因此还是想不明白在防御攻击的角度上,这个binary为什么能防住。

论坛徽章:
0
5 [报告]
发表于 2018-01-16 16:31 |只看该作者
谢谢了!如果用“set names GBK”的话,是存在宽字节注入漏洞的。比如发起请求:
  1. http://sbyxxz.psb828.com/index.php?a=%df'
复制代码

经服务端转义后,a的值会变成%df%5c',而%df%5c是一个汉字,这相当于把单引号给逃离出来了,可以发起sql注入攻击。
如果设置“character_set_client=BINARY”,即使“不做转换、直接存储”,那么mysql在解析sql之前,sql中a的内容还是%df%5c',按照这个逻辑,按说还是存在漏洞的。因此还是想不明白在防御攻击的角度上,这个binary为什么能防住。

论坛徽章:
0
6 [报告]
发表于 2018-01-16 19:40 |只看该作者
谢谢了!如果用“set names GBK”的话,是存在宽字节注入漏洞的。比如发起请求:
  1. http://sbyxxz.psb828.com/index.php?a=%df'
复制代码
经服务端转义后,a的值会变成:
  1. %df%5c'
复制代码
而%df%5c是一个汉字,这相当于把单引号给逃离出来了,可以发起sql注入攻击。
如果设置character_set_client=BINARY,即使不做转换、直接存储,那么mysql在解析sql之前,sql中a的内容还是:
  1. %df%5c'
复制代码
按照这个逻辑,按说还是存在漏洞的。因此还是想不明白在防御攻击的角度上,这个binary为什么能防住。

论坛徽章:
0
7 [报告]
发表于 2018-01-16 19:41 |只看该作者
谢谢了!如果用“set names GBK”的话,是存在宽字节注入漏洞的。比如发起请求:
  1. http://sbyxxz.psb828.com/index.php?a=%df’
复制代码
经服务端转义后,a的值会变成:
  1. %df%5c’
复制代码
而%df%5c是一个汉字,这相当于把单引号给逃离出来了,可以发起sql注入攻击。
如果设置character_set_client=BINARY,即使不做转换、直接存储,那么mysql在解析sql之前,sql中a的内容还是:
  1. %df%5c’
复制代码
按照这个逻辑,按说还是存在漏洞的。因此还是想不明白在防御攻击的角度上,这个binary为什么能防住。

论坛徽章:
0
8 [报告]
发表于 2018-01-17 08:30 |只看该作者
本帖最后由 danieluec 于 2018-01-17 08:32 编辑

谢谢~
从安全的角度看,如果二进制字符集就是不做转换、直接存储、传输字节,那么按照mysql的编码转换流程(client->connection->server),将client的编码设置为binary也是防不住注入漏洞的。所以想弄明具体binary的功能和整个编码过程。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2018-01-17 09:33 |只看该作者
回复 20# danieluec

防注入应该有一些相关的专题文章或讨论,楼主有发现有价值的欢迎分享给大家哈。

论坛徽章:
146
2015年亚洲杯之日本
日期:2015-04-28 13:32:012015年亚洲杯之朝鲜
日期:2015-05-06 10:16:442015年亚洲杯之日本
日期:2015-05-06 10:21:342015年亚洲杯纪念徽章
日期:2015-05-13 17:16:442015亚冠之北京国安
日期:2015-05-13 17:18:292015亚冠之鹿岛鹿角
日期:2015-05-13 17:19:062015亚冠之德黑兰石油
日期:2015-05-27 16:47:402015亚冠之塔什干棉农
日期:2015-05-28 15:24:122015亚冠之卡尔希纳萨夫
日期:2015-06-01 13:52:392015亚冠之柏斯波利斯
日期:2015-06-04 17:37:292015亚冠之阿尔纳斯尔
日期:2015-06-16 11:31:202015亚冠之塔什干火车头
日期:2015-06-23 10:12:33
10 [报告]
发表于 2018-01-17 11:28 |只看该作者
回复 1# danieluec

回帖以标注成精华帖,感谢您对社区内容的贡献
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】2021年5月20日-22日第十三届中国系统架构师大会将在云端进行网络直播。

大会为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。
http://sbyxxz.psb828.com/


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - 申博游戏下载
  
网站地图 ag真人百家乐 申博代理 菲律宾太城申博 澳门大三巴赌场
申博游戏登入 辉煌国际游戏登入 www.188msc.com 申博代理管理网手机登入
菲律宾申博开户 老虎机游戏 咪牌百家乐 申博娱乐注册
申博游戏登入 澳门星际赌场 星级百家乐 菲律宾申博娱乐
澳门大三巴赌场 申博娱乐 申博现金网址 太阳城申博开户