MYSQL中怎么截?cái)嚅L(zhǎng)字符

這篇文章將為大家詳細(xì)講解有關(guān)中怎么截?cái)嚅L(zhǎng)字符,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

這篇文章將為大家詳細(xì)講解有關(guān)中怎么截?cái)嚅L(zhǎng)字符,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了頭屯河免費(fèi)建站歡迎大家使用!

MYSQL長(zhǎng)字符截?cái)嗉词箾](méi)有任何注入漏洞,攻擊者也可能登錄到后臺(tái)管理頁(yè)面1、相關(guān)資料

2、sql-mode的各項(xiàng)設(shè)置

MySQL5.0以上版本支持三種sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。

1、ANSI模式:寬松模式,更改語(yǔ)法和行為,使其更符合標(biāo)準(zhǔn)SQL。對(duì)插入數(shù)據(jù)進(jìn)行校驗(yàn),如果不符合定義類型或長(zhǎng)度,對(duì)數(shù)據(jù)類型調(diào)整或截?cái)啾4?,?bào)warning警告。對(duì)于本文開(kāi)頭中提到的錯(cuò)誤,可以先把sql_mode設(shè)置為ANSI模式,這樣便可以插入數(shù)據(jù),而對(duì)于除數(shù)為0的結(jié)果的字段值,數(shù)據(jù)庫(kù)將會(huì)用NULL值代替。

2、TRADITIONAL模式:嚴(yán)格模式,當(dāng)向mysql數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí),進(jìn)行數(shù)據(jù)的嚴(yán)格校驗(yàn),保證錯(cuò)誤數(shù)據(jù)不能插入,報(bào)error錯(cuò)誤,而不僅僅是警告。用于事物時(shí),會(huì)進(jìn)行事物的回滾。 注釋:一旦發(fā)現(xiàn)錯(cuò)誤立即放棄INSERT/UPDATE。如果你使用非事務(wù)存儲(chǔ)引擎,這種方式不是你想要的,因?yàn)槌霈F(xiàn)錯(cuò)誤前進(jìn)行的數(shù)據(jù)更改不會(huì)“滾動(dòng)”,結(jié)果是更新“只進(jìn)行了一部分”。

3、STRICT_TRANS_TABLES模式:嚴(yán)格模式,進(jìn)行數(shù)據(jù)的嚴(yán)格校驗(yàn),錯(cuò)誤數(shù)據(jù)不能插入,報(bào)error錯(cuò)誤。如果不能將給定的值插入到事務(wù)表中,則放棄該語(yǔ)句。對(duì)于非事務(wù)表,如果值出現(xiàn)在單行語(yǔ)句或多行語(yǔ)句的第1行,則放棄該語(yǔ)句。
STRICT_TRANS_TABLES:
在該模式下,如果一個(gè)值不能插入到一個(gè)事務(wù)表中,則中斷當(dāng)前的操作,對(duì)非事務(wù)表不做限制。必須設(shè)置,以后各項(xiàng)可能依賴于該項(xiàng)的設(shè)置
NO_ENGINE_SUBSTITUTION:
如果需要的存儲(chǔ)引擎被禁用或未編譯,那么拋出錯(cuò)誤。不設(shè)置此值時(shí),用默認(rèn)的存儲(chǔ)引擎替代,并拋出一個(gè)異常
ONLY_FULL_GROUP_BY:
對(duì)于GROUP BY操作,如果在SELECT中出現(xiàn)的單獨(dú)的列,沒(méi)有在GROUP BY子句中出現(xiàn),那么這個(gè)SQL是不合法的
NO_AUTO_VALUE_ON_ZERO:
該值影響自增長(zhǎng)列的插入。默認(rèn)設(shè)置下,插入0或NULL代表生成下一個(gè)自增長(zhǎng)值。如果用戶希望插入的值為0,而該列又是自增長(zhǎng)的,那么這個(gè)選項(xiàng)就有用了
NO_ZERO_IN_DATE:
在嚴(yán)格模式下,不允許日期和月份為零
NO_ZERO_DATE:
設(shè)置該值,mysql數(shù)據(jù)庫(kù)不允許插入零日期,插入零日期會(huì)拋出錯(cuò)誤而不是警告
ERROR_FOR_DIVISION_BY_ZERO:
在INSERT或UPDATE過(guò)程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯(cuò)誤而非警告。如果未給出該模式,那么數(shù)據(jù)被零除時(shí)MySQL返回NULL
NO_AUTO_CREATE_USER:
禁止GRANT語(yǔ)句創(chuàng)建密碼為空的用戶
PIPES_AS_CONCAT:
將“||”視為字符串的連接操作符而非或運(yùn)算符,這和Oracle數(shù)據(jù)庫(kù)是一樣的,也和字符串的拼接函數(shù)Concat相類似
ANSI_QUOTES:
啟用ANSI_QUOTES后,不能用雙引號(hào)來(lái)引用字符串,因?yàn)樗唤忉尀樽R(shí)別符

也可以在命令行查看和設(shè)置sql_mode變量

3、產(chǎn)生原因:(1)在sql-mode里沒(méi)有加上STRICT_TRANS_TABLES或者TRADITIONAL (2)加上的是ANSI

這里username為varchar(5),即最大規(guī)定長(zhǎng)度為5,而輸入的值為‘a(chǎn)dmsddsff’,長(zhǎng)度為9,超過(guò)規(guī)定長(zhǎng)度,可是并沒(méi)有報(bào)錯(cuò)。通過(guò)查詢可知被截?cái)嗔?。那么我們可以利用這個(gè)漏洞,像相關(guān)資料第二張里被紅筆圈的那句話一樣

4、預(yù)防方法:在sql-mode里加STRICT_TRANS_TABLES或者TRADITIONAL

加上”STRICT_TRANS_TABLES“或者”TRADITIONAL“后,輸入的數(shù)據(jù)超過(guò)規(guī)定長(zhǎng)度就會(huì)報(bào)錯(cuò),不能輸入

網(wǎng)頁(yè)題目:MYSQL中怎么截?cái)嚅L(zhǎng)字符
當(dāng)前地址:http://www.bm7419.com/article26/ehjjjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、搜索引擎優(yōu)化網(wǎng)站收錄、電子商務(wù)Google、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名