日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园

發(fā)布時(shí)間:2023/12/20 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL字符串的限制長(zhǎng)度看似重要性不要,其實(shí)和整個(gè)MySQL數(shù)據(jù)庫(kù)的安全性是息息相關(guān)的,很值得我們?nèi)ド钊胙芯糠治觥QL注入攻擊一直都在被廣泛的討論,然而人們卻忽略了今天我將要介紹的這兩個(gè)安全隱患,那就是超長(zhǎng)SQL查詢和單列SQL字符長(zhǎng)度限制可能會(huì)帶來(lái)的問(wèn)題。下面學(xué)步園小編來(lái)講解下超長(zhǎng)SQL怎么查詢?MySQL列長(zhǎng)度限制有哪些?

超長(zhǎng)SQL怎么查詢

max_packet_size

這個(gè)東西是用來(lái)限制mysql客戶端和服務(wù)器通信數(shù)據(jù)包的長(zhǎng)度的,比如一個(gè)查詢?yōu)椤皊elect*fromuserwhere1”,那么這個(gè)長(zhǎng)度僅僅幾十個(gè)字節(jié),所以不會(huì)超標(biāo)。在絕大多情況下,我們很難會(huì)超過(guò)mysql的默認(rèn)限制1M(可以想象一下,1M的SQL語(yǔ)句還是很長(zhǎng)的)。這里插一句,看到該文之后,我終于清楚我當(dāng)初用PEARDB的INSERT插入數(shù)據(jù)失敗的原因了,很可能就是數(shù)據(jù)長(zhǎng)度超標(biāo)。對(duì)于MySQL來(lái)說(shuō),如果查詢MySQL字符串的大小超過(guò)了這個(gè)限制,mysql將不會(huì)執(zhí)行任何查詢操作

如果訪問(wèn)者有可能控制你的sql長(zhǎng)度,那么你的程序可能會(huì)受到攻擊。哪些情況訪問(wèn)者可能控制sql的長(zhǎng)度呢,比如不限制關(guān)鍵字長(zhǎng)度的搜索。還有可能就是你的程序如果要將用戶的登錄作為日志啟用,總之凡是涉及到超長(zhǎng)sql查詢的地方,一定得小心檢查自己的sql,防止超長(zhǎng)而查詢失效。不過(guò)說(shuō)實(shí)在的,本人認(rèn)為這個(gè)問(wèn)題倒不是多大,數(shù)據(jù)庫(kù)光里管理員也可以自行設(shè)置MySQL的max_packet_size的長(zhǎng)度,或者在處理可能超長(zhǎng)的SQL查詢的時(shí)候做一個(gè)長(zhǎng)度判斷。

MySQL列長(zhǎng)度限制有哪些

這個(gè)是該篇文章的重點(diǎn)。MySQL對(duì)于插入的字符串,如果長(zhǎng)度超過(guò)了數(shù)據(jù)表限制的長(zhǎng)度,MySQL將會(huì)截取前面部分MySQL字符串插入數(shù)據(jù)庫(kù)中,而不會(huì)將錯(cuò)誤報(bào)給web程序。對(duì)于粗心的程序員,這個(gè)問(wèn)題可能會(huì)導(dǎo)致程序的漏洞,其實(shí)目前的wordpress有很多限制,通過(guò)這個(gè)漏洞攻擊應(yīng)該沒(méi)有任何作用。下面是原作者的幾個(gè)假設(shè),如果同時(shí)滿足這幾個(gè)條件,獲取一個(gè)站點(diǎn)的用戶名是相當(dāng)容易的事情,幸運(yùn)的是目前的wordpress并不太可能會(huì)同時(shí)滿足下面的條件:

該web應(yīng)用允許用戶注冊(cè)(開(kāi)放注冊(cè)的wordpress滿足此條件);

超級(jí)管理員的用戶名已知的,比如admin,這樣方便攻擊者尋找目標(biāo)(可憐wordpress也滿足)

MySQL使用的是默認(rèn)的配置(估計(jì)大多數(shù)都滿足)

注冊(cè)新用戶的時(shí)候,程序沒(méi)有對(duì)用戶名的長(zhǎng)度給予限制(我測(cè)試過(guò),wordpress也滿足)

用戶名被限制在16個(gè)字符(這個(gè)和上面的沒(méi)有關(guān)系,僅僅是方便舉例)

下面這個(gè)是攻擊者是怎么攻擊的:

首先攻擊者用已知的超級(jí)管理員id如admin注冊(cè),那么這個(gè)時(shí)候程序就會(huì)用

(show/hide)plaintext

SELECT*FROMuserWHEREusername='admin'

來(lái)檢查該ID是否已經(jīng)存在,如果存在,這不允許注冊(cè),當(dāng)然,攻擊者嘗試注冊(cè)admin肯定會(huì)失敗;

但是如果攻擊者用admin X(admin和x之間有11個(gè)或以上的空格)來(lái)注冊(cè)呢,按照上面的判斷,由于adminx不存在數(shù)據(jù)庫(kù)中,所以當(dāng)然就能注冊(cè)成功了,事實(shí)上wordpress2.6.1之前的版本確實(shí)可以這樣,由于列長(zhǎng)度的限制在16個(gè)字符內(nèi),所以末尾的x就被截掉了,那么現(xiàn)在數(shù)據(jù)庫(kù)中就存在兩個(gè)一模一樣的用戶admin了。(旁白:糟糕,那我的程序不是都要去修改。其實(shí)沒(méi)有必要,你只要把ID設(shè)置為UNIQUE就可以了,于是乎,下面的問(wèn)題就和你沒(méi)有關(guān)系了)

攻擊者繼續(xù),這個(gè)時(shí)候攻擊者就順利的注冊(cè)了admin這個(gè)用戶名,然后攻擊者用admin和自己的密碼登錄進(jìn)入賬戶管理(wordpress即使注冊(cè)了也無(wú)法登陸),由于真正的admin的帳號(hào)先于攻擊者admin注冊(cè),所以在賬戶信息頁(yè)面,顯示的信息非常有可能就是真正admin的信息,包括密碼提示和email等,這個(gè)時(shí)候攻擊者就可以對(duì)admin的信息進(jìn)行任意修改,包括密碼和密碼找回。

所以,寫web程序的你,是不是該去檢查一下自己的程序是否有此類的漏洞呢。

以上就是關(guān)于“超長(zhǎng)SQL怎么查詢?MySQL列長(zhǎng)度限制有哪些”的內(nèi)容,希望對(duì)大家有用。更多資訊請(qǐng)關(guān)注學(xué)步園。學(xué)步園,您學(xué)習(xí)IT技術(shù)的優(yōu)質(zhì)平臺(tái)!

總結(jié)

以上是生活随笔為你收集整理的mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。