<menu id="4oq46"><strong id="4oq46"></strong></menu>
  • <menu id="4oq46"><menu id="4oq46"></menu></menu><input id="4oq46"><tt id="4oq46"></tt></input>
  • <tt id="4oq46"><strong id="4oq46"></strong></tt>
    <menu id="4oq46"><strong id="4oq46"></strong></menu>
      免費注冊 查看新帖 |

    Chinaunix

      平臺 論壇 博客 文庫
    12下一頁
    最近訪問板塊 發新帖
    查看: 157939 | 回復: 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://xxx.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://xxx.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://xxx.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://xxx.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://xxx.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

    回帖以標注成精華帖,感謝您對社區內容的貢獻
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則 發表回復

      

    北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報專區
    中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
    感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP
       日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站