一. MySQL事務(wù)
事務(wù):將數(shù)據(jù)庫(kù)從一種一致性狀態(tài)轉(zhuǎn)到另一種一致性狀態(tài)
1.事務(wù)的特性
- 原子性:事務(wù)中的所有操作,要么全部執(zhí)行,要么都不執(zhí)行
- 一致性:事務(wù)開(kāi)始和結(jié)束后刽脖,數(shù)據(jù)庫(kù)的完整性不會(huì)被破壞
- 持久性:事務(wù)提交后鼻疮,對(duì)數(shù)據(jù)的修改是永久性的,即使系統(tǒng)故障也不會(huì)丟失
- 隔離性:事務(wù)之間互不影響
2. 事務(wù)的隔離級(jí)別
- 讀未提交(read uncommited):即事務(wù)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)所做的修改肆糕,在事務(wù)未提交之前,可以被其他事務(wù)看到在孝。
- 讀已提交(read commited): 會(huì)產(chǎn)生的問(wèn)題:不可重復(fù)讀诚啃、幻讀
- 可重復(fù)讀(默認(rèn)隔離級(jí)別(repeatable read):A事務(wù)讀取數(shù)據(jù)庫(kù)數(shù)據(jù),在處理業(yè)務(wù)的過(guò)程中事務(wù)B讀取數(shù)據(jù)并修改完成后私沮,事務(wù)A再次讀取數(shù)據(jù)時(shí)始赎,所得結(jié)果和之前讀取的數(shù)據(jù)一致,并且事務(wù)A提交后仔燕,不會(huì)損害數(shù)據(jù)的一致性造垛。
- 串行化(serializable):表上的一個(gè)事務(wù)開(kāi)啟后,在該事務(wù)提交之前晰搀,其他事務(wù)不能對(duì)表中的數(shù)據(jù)做任何修改不會(huì)出現(xiàn):臟讀五辽、不可重復(fù)讀、幻讀.
3.事務(wù)的操作
- 開(kāi)啟事務(wù) begin 或start transaction
- 提交事務(wù) commit
- 回滾事務(wù) rollback
- 設(shè)置保存點(diǎn) savepoint 保存點(diǎn)名稱(chēng)
- 回滾到具體的保存點(diǎn) rollback to 保存點(diǎn)名稱(chēng)
4. 操作事務(wù)隔離級(jí)別的基本命令
1.查看當(dāng)前隔離級(jí)別
select @@tx_isolation;
2.設(shè)置當(dāng)前會(huì)話(huà)(連接)的事務(wù)隔離級(jí)別:
set session transaction isolation level read uncommitted | read committed | repetable read | serializable;
二. MySQL的索引
MySQL索引的概念
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分)外恕,它們包含著對(duì)數(shù)據(jù)表里所有記錄的引用指針杆逗。
索引用于快速找出在某個(gè)列中有一特定值的行乡翅,不使用索引,MySQL必須從第一條記錄開(kāi)始讀完整個(gè)表罪郊,直到找出相關(guān)的行蠕蚜,表越大,查詢(xún)數(shù)據(jù)所花費(fèi)的時(shí)間就越多悔橄,如果表中查詢(xún)的列有一個(gè)索引靶累,MySQL能夠快速到達(dá)一個(gè)位置去搜索數(shù)據(jù)文件,而不必查看所有數(shù)據(jù)癣疟,那么將會(huì)節(jié)省很大一部分時(shí)間挣柬。
1. 索引的分類(lèi)
注意: 索引是在存儲(chǔ)引擎中實(shí)現(xiàn)的,也就是說(shuō)不同的存儲(chǔ)引擎争舞,會(huì)使用不同的索引MyISAM和InnoDB存儲(chǔ)引擎:只支持BTREE索引凛忿, 也就是說(shuō)默認(rèn)使用BTREE,不能夠更換MEMORY/HEAP存儲(chǔ)引擎:支持HASH和BTREE索引
索引一般分為四類(lèi): 單列索引(普通索引竞川,唯一索引店溢,主鍵索引)、組合索引委乌、全文索引床牧、空間索引。
1). 單列索引
- (1). 普通索引:這是最基本的索引類(lèi)型遭贸,而且它沒(méi)有唯一性之類(lèi)的限制戈咳。普通索引可以通過(guò)以下幾種方式創(chuàng)建:
- 創(chuàng)建索引,例如CREATE INDEX 索引的名字 ON tablename (列名1壕吹,列名2,...);
- 修改表著蛙,例如ALTER TABLE tablename ADD INDEX 索引的名字 (列名1,列名2,...);
- 創(chuàng)建表的時(shí)候指定索引耳贬,例如CREATE TABLE tablename ( [...], INDEX 索引的名字 (列名1踏堡,列名 2,...) );
CREATE TABLE book
(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
authors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL,
year_publication YEAR NOT NULL,
INDEX(year_publication)
KEY(year_publication)
);
-
唯一索引:這種索引和前面的“普通索引”基本相同,但有一個(gè)區(qū)別:索引列的所有值都只能出現(xiàn)一次咒劲,即必須唯一顷蟆。唯一性索引可以用以下幾種方式創(chuàng)建:
- 創(chuàng)建索引,例如CREATE UNIQUE INDEX 索引的名字 ON tablename (列的列表);
- 修改表腐魂,例如ALTER TABLE tablename ADD UNIQUE 索引的名字 (列的列表);
- 創(chuàng)建表的時(shí)候指定索引帐偎,例如CREATE TABLE tablename ( [...], UNIQUE 索引的名字 (列的列表) );
CREATE TABLE t1
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
UNIQUE INDEX UniqIdx(id)
);
-
主鍵索引: 主鍵是一種唯一性索引,但它必須指定為“PRIMARY KEY”蛔屹。如果你曾經(jīng)用過(guò)AUTO_INCREMENT類(lèi)型的列削樊,你可能已經(jīng)熟悉主鍵之類(lèi)的概念了。
主鍵一般在創(chuàng)建表的時(shí)候指定判导,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”嫉父。但是沛硅,我們也可以通過(guò)修改表的方式加入主鍵眼刃,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”绕辖。每個(gè)表只能有一個(gè)主鍵。 (主鍵相當(dāng)于聚合索引擂红,是查找最快的索引) 仪际。
CREATE TABLE t2
(
id INT NOT NULL,
name CHAR(10),
PRIMARY KEY(id)
);
2). 組合索引
在表中的多個(gè)字段組合上創(chuàng)建的索引,只有在查詢(xún)條件中使用了這些字段的左邊字段時(shí)昵骤,索引才會(huì)被使用树碱,使用組合索引時(shí)遵循最左前綴集合。
組合索引就是在多個(gè)字段上創(chuàng)建一個(gè)索引
創(chuàng)建一個(gè)表t3变秦,在表中的id成榜、name和age字段上建立組合索引
CREATE TABLE t3
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255), INDEX MultiIdx(id,name,age)
);
3) . 全文索引
全文索引,只有在MyISAM引擎上才能使用蹦玫,只能在CHAR,VARCHAR,TEXT類(lèi)型字段上使用全文索引赎婚,介紹了要求,說(shuō)說(shuō)什么是全文索引樱溉,就是在一堆文字中挣输,通過(guò)其中的某個(gè)關(guān)鍵字等,就能找到該字段所屬的記錄行福贞,比如有"你是個(gè)大煞筆撩嚼,二貨 ..." 通過(guò)大煞筆,可能就可以找到該條記錄挖帘。這里說(shuō)的是可能完丽,因?yàn)槿乃饕氖褂蒙婕傲撕芏嗉?xì)節(jié),我們只需要知道這個(gè)大概意思.
全文索引可以用于全文搜索拇舀,但只有MyISAM存儲(chǔ)引擎支持FULLTEXT索引逻族,并且只為CHAR、VARCHAR和TEXT列服務(wù)你稚。索引總是對(duì)整個(gè)列進(jìn)行瓷耙,不支持前綴索引:
CREATE TABLE t4
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX FullTxtIdx(info)
)ENGINE=MyISAM;
4). 空間索引
空間索引是對(duì)空間數(shù)據(jù)類(lèi)型的字段建立的索引,MySQL中的空間數(shù)據(jù)類(lèi)型有四種刁赖,GEOMETRY搁痛、POINT、LINESTRING宇弛、POLYGON鸡典。在創(chuàng)建空間索引時(shí),使用SPATIAL關(guān)鍵字枪芒。 要求彻况,引擎為MyISAM谁尸,創(chuàng)建空間索引的列,必須將其聲明為NOT NULL纽甘。
CREATE TABLE t5
(
g GEOMETRY NOT NULL,
SPATIAL INDEX spatIdx(g)
) ENGINE = MyISAM;
2. 根據(jù)sql查詢(xún)語(yǔ)句確定創(chuàng)建哪種類(lèi)型的索引良蛮,如何優(yōu)化查詢(xún)
選擇索引列:
1). 性能優(yōu)化過(guò)程中,選擇在哪個(gè)列上創(chuàng)建索引是最重要的步驟之一悍赢。可以考慮使用索引的主要有 兩種類(lèi)型的列:在where子句中出現(xiàn)的列决瞳,在join子句中出現(xiàn)的列。
2). 考慮列中值的分布左权,索引的列的基數(shù)越大皮胡,索引的效果越好。
3). 使用短索引赏迟,如果對(duì)字符串列進(jìn)行索引屡贺,應(yīng)該指定一個(gè)前綴長(zhǎng)度,可節(jié)省大量索引空間锌杀,提升查詢(xún)速度甩栈。
4). 利用最左前綴
組合索引就是遵從了最左前綴,利用索引中最左邊的列集來(lái)匹配行抛丽,這樣的列集稱(chēng)為最左前綴谤职,不明白沒(méi)關(guān)系,舉幾個(gè)例子就明白了亿鲜,例如允蜈,這里由id、name和age3個(gè)字段構(gòu)成的索引蒿柳,索引行中就按id/name/age的順序存放饶套,索引可以索引下面字段組合(id,name垒探,age)妓蛮、(id,name)或者(id)圾叼。如果要查詢(xún)的字段不構(gòu)成索引最左面的前綴蛤克,那么就不會(huì)是用索引,比如夷蚊,age或者(name构挤,age)組合就不會(huì)使用索引查詢(xún)5). 不要過(guò)度索引,只保持所需的索引惕鼓。每個(gè)額外的索引都要占用額外的磁盤(pán)空間筋现,并降低寫(xiě)操作的性能。
在修改表的內(nèi)容時(shí),索引必須進(jìn)行更新矾飞,有時(shí)可能需要重構(gòu)一膨,因此,索引越多洒沦,所花的時(shí)間越長(zhǎng)豹绪。
MySQL只對(duì)一下操作符才使用索引:<,<=,=,>,>=,between,in, 以及某些時(shí)候的like(不以通配符%或_開(kāi)頭的情形)。
三. MySQL的優(yōu)化及查看數(shù)據(jù)庫(kù)占用的內(nèi)存
1. 查看數(shù)據(jù)庫(kù)占用的內(nèi)存
1)微谓、進(jìn)去指定schema 數(shù)據(jù)庫(kù)(存放了其他的數(shù)據(jù)庫(kù)的信息)
use information_schema
2)森篷、查詢(xún)所有數(shù)據(jù)的大小
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES
3)输钩、查看指定數(shù)據(jù)庫(kù)的大小
比如說(shuō) 數(shù)據(jù)庫(kù)apoyl
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='apoyl';
4)豺型、查看指定數(shù)據(jù)庫(kù)的表的大小
比如說(shuō) 數(shù)據(jù)庫(kù)apoyl 中apoyl_test表
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='apoyl' and table_name='apoyl_test';
2.MySQL數(shù)據(jù)庫(kù)的優(yōu)化
MySQL數(shù)據(jù)庫(kù)優(yōu)化的八種方式>>>
mysql數(shù)據(jù)庫(kù)常見(jiàn)的優(yōu)化操作總結(jié)>>>
MySQL優(yōu)化的技巧>>>
MYSQL優(yōu)化主要分為以下四大方面:
設(shè)計(jì):存儲(chǔ)引擎,字段類(lèi)型买乃,范式與逆范式
功能:索引姻氨,緩存,分區(qū)分表剪验。
架構(gòu):主從復(fù)制肴焊,讀寫(xiě)分離,負(fù)載均衡功戚。
合理SQL:測(cè)試娶眷,經(jīng)驗(yàn)。
四.如何防SQL注入
1. SQL注入
SQL注入啸臀,就是通過(guò)把SQL命令插入到Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串届宠,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。 具體來(lái)說(shuō)乘粒,它是利用現(xiàn)有應(yīng)用程序豌注,將(惡意的)SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的能力,它可以通過(guò)在Web表單中輸入(惡意)SQL語(yǔ)句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫(kù)灯萍,而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語(yǔ)句轧铁。 比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過(guò)WEB表單遞交查詢(xún)字符暴出的,這類(lèi)表單特別容易受到SQL注入式攻擊.
2.如何判斷是否被sql注入了
SQL注入一般會(huì)在http://xxx.xxx.xxx/abc.asp?id=XX這樣等帶有參數(shù)的ASP動(dòng)態(tài)網(wǎng)頁(yè)中旦棉,有些動(dòng)態(tài)網(wǎng)頁(yè)中可能只有一個(gè)參數(shù)齿风,有些可能有n個(gè)參數(shù);有些參數(shù)是整型绑洛,有些參數(shù)是字符串型救斑。只要是帶有參數(shù)的動(dòng)態(tài)網(wǎng)頁(yè)訪問(wèn)了數(shù)據(jù)庫(kù)就有可能存在SQL注入。
我們首選要修改瀏覽器的設(shè)置诊笤,以便更好的了解動(dòng)態(tài)網(wǎng)頁(yè)參數(shù)里包含的信息系谐。以IE瀏覽器為例,把IE菜單-工具-Internet選項(xiàng)-高級(jí)-顯示友好HTTP錯(cuò)誤信息前面的勾去掉。
1)纪他、整型參數(shù)的判斷
當(dāng)輸入的參數(shù)YY為整型時(shí)鄙煤,通常abc.asp中SQL語(yǔ)句原貌大致如下:
select * from 表名 where 字段=YY,所以可以用以下步驟測(cè)試SQL注入是否存在茶袒。
- (1)http://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp運(yùn)行異常梯刚;
- (2)http://xxx.xxx.xxx/abc.asp?p=YY’(附加一個(gè)單引號(hào)),此時(shí)abc.ASP中的SQL語(yǔ)句變成了select * from 表名 where 字段=YY’薪寓,abc.asp運(yùn)行異常亡资;
- (3)http://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp運(yùn)行正常,而且與http://xxx.xxx.xxx/abc.asp?p=YY運(yùn)行結(jié)果相同向叉;
如果這三個(gè)方面全部滿(mǎn)足锥腻,abc.asp中一定存在SQL注入漏洞!
2)母谎、字符串型參數(shù)的判斷
當(dāng)輸入的參數(shù)YY為字符串時(shí)瘦黑,通常abc.asp中SQL語(yǔ)句原貌大致如下:
select * from 表名 where 字段=’YY’,所以可以用以下步驟測(cè)試SQL注入是否存在奇唤。
- (1)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’2′, abc.asp運(yùn)行異常幸斥;
- (2)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1’=’1′, abc.asp運(yùn)行正常,而且與http://xxx.xxx.xxx/abc.asp?p=YY運(yùn)行結(jié)果相同咬扇;
- (3)http://xxx.xxx.xxx/abc.asp?p=YY’(附加一個(gè)單引號(hào))甲葬,此時(shí)abc.ASP中的SQL語(yǔ)句變成了select * from 表名 where 字段=YY’,abc.asp運(yùn)行異常懈贺;
如果這三個(gè)方面全部滿(mǎn)足经窖,abc.asp中一定存在SQL注入漏洞!
3)隅居、字符被過(guò)濾的判斷
有安全意識(shí)的ASP程序員會(huì)過(guò)濾掉單引號(hào)等字符钠至,以防止SQL注入。這種情況可以用下面幾種方法嘗試胎源。
(1)ASCII方法:所有的輸入部分或全部字符的ASCII代碼,如U = CRH(85),一個(gè)= CRH(97),等等棉钧。
(2)UNICODE方法:在IIS UNICODE字符集實(shí)現(xiàn)國(guó)際化,我們可以在輸入字符串即輸入U(xiǎn)NICODE字符串。如+ = % 2 b,空格= % 20,等;
混合設(shè)置方法:大小是大小寫(xiě)不敏感的,因?yàn)楦鶕?jù)當(dāng)時(shí)和過(guò)濾器的程序員通常要么過(guò)濾所有大寫(xiě)字母的字符串,或過(guò)濾所有小寫(xiě)的字符串,大小寫(xiě)混合往往會(huì)被忽略涕蚤。如用SelecT代替select,SELECT等宪卿。
3.如何防止sql注入
1)普通用戶(hù)與系統(tǒng)管理員用戶(hù)的權(quán)限要有嚴(yán)格的區(qū)分。
如果一個(gè)普通用戶(hù)在使用查詢(xún)語(yǔ)句中嵌入另一個(gè)Drop Table語(yǔ)句万栅,那么是否允許執(zhí)行呢?由于Drop語(yǔ)句關(guān)系到數(shù)據(jù)庫(kù)的基本對(duì)象佑钾,故要操作這個(gè)語(yǔ)句用戶(hù)必須有相關(guān)的權(quán)限。在權(quán)限設(shè)計(jì)中烦粒,對(duì)于終端用戶(hù)休溶,即應(yīng)用軟件的使用者代赁,沒(méi)有必要給他們數(shù)據(jù)庫(kù)對(duì)象的建立、刪除等權(quán)限兽掰。那么即使在他們使用SQL語(yǔ)句中帶有嵌入式的惡意代碼芭碍,由于其用戶(hù)權(quán)限的限制,這些代碼也將無(wú)法被執(zhí)行孽尽。故應(yīng)用程序在設(shè)計(jì)的時(shí)候窖壕,
2)強(qiáng)制使用參數(shù)化語(yǔ)句。
如果在編寫(xiě)SQL語(yǔ)句的時(shí)候杉女,用戶(hù)輸入的變量不是直接嵌入到SQL語(yǔ)句瞻讽。而是通過(guò)參數(shù)來(lái)傳遞這個(gè)變量的話(huà),那么就可以有效的防治SQL注入式攻擊熏挎。也就是說(shuō)速勇,用戶(hù)的輸入絕對(duì)不能夠直接被嵌入到SQL語(yǔ)句中。與此相反婆瓜,用戶(hù)的輸入的內(nèi)容必須進(jìn)行過(guò)濾快集,或者使用參數(shù)化的語(yǔ)句來(lái)傳遞用戶(hù)輸入的變量。參數(shù)化的語(yǔ)句使用參數(shù)而不是將用戶(hù)輸入變量嵌入到SQL語(yǔ)句中廉白。采用這種措施,可以杜絕大部分的SQL注入式攻擊乖寒。不過(guò)可惜的是猴蹂,現(xiàn)在支持參數(shù)化語(yǔ)句的數(shù)據(jù)庫(kù)引擎并不多。不過(guò)數(shù)據(jù)庫(kù)工程師在開(kāi)發(fā)產(chǎn)品的時(shí)候要盡量采用參數(shù)化語(yǔ)句楣嘁。
3)多使用SQL Server數(shù)據(jù)庫(kù)自帶的安全參數(shù)磅轻。
為了減少注入式攻擊對(duì)于SQL Server數(shù)據(jù)庫(kù)的不良影響,在SQLServer數(shù)據(jù)庫(kù)專(zhuān)門(mén)設(shè)計(jì)了相對(duì)安全的SQL參數(shù)逐虚。在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中聋溜,工程師要盡量采用這些參數(shù)來(lái)杜絕惡意的SQL注入式攻擊。
如在SQL Server數(shù)據(jù)庫(kù)中提供了Parameters集合叭爱。這個(gè)集合提供了類(lèi)型檢查和長(zhǎng)度驗(yàn)證的功能撮躁。
4)加強(qiáng)對(duì)用戶(hù)輸入的驗(yàn)證。
總體來(lái)說(shuō)买雾,防治SQL注入式攻擊可以采用兩種方法把曼, 一是加強(qiáng)對(duì)用戶(hù)輸入內(nèi)容的檢查與驗(yàn)證; 二是強(qiáng)迫使用參數(shù)化語(yǔ)句來(lái)傳遞用戶(hù)輸入的內(nèi)容。在SQLServer數(shù)據(jù)庫(kù)中漓穿,有比較多的用戶(hù)輸入內(nèi)容驗(yàn)證工具嗤军,可以幫助管理員來(lái)對(duì)付SQL注入式攻擊。測(cè)試字符串變量的內(nèi)容晃危,只接受所需的值叙赚。拒絕包含二進(jìn)制數(shù)據(jù)、轉(zhuǎn)義序列和注釋字符的輸入內(nèi)容。這有助于防止腳本注入震叮,防止某些緩沖區(qū)溢出攻擊沿量。測(cè)試用戶(hù)輸入內(nèi)容的大小和數(shù)據(jù)類(lèi)型,強(qiáng)制執(zhí)行適當(dāng)?shù)南拗婆c轉(zhuǎn)換冤荆。這即有助于防止有意造成的緩沖區(qū)溢出朴则,對(duì)于防治注入式攻擊有比較明顯的效果。
如可以使用存儲(chǔ)過(guò)程來(lái)驗(yàn)證用戶(hù)的輸入钓简。利用存儲(chǔ)過(guò)程可以實(shí)現(xiàn)對(duì)用戶(hù)輸入變量的過(guò)濾乌妒,如拒絕一些特殊的符號(hào)。如以上那個(gè)惡意代碼中外邓,只要存儲(chǔ)過(guò)程把那個(gè)分號(hào)過(guò)濾掉撤蚊,那么這個(gè)惡意代碼也就沒(méi)有用武之地了。在執(zhí)行SQL語(yǔ)句之前损话,可以通過(guò)數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程侦啸,來(lái)拒絕接納一些特殊的符號(hào)。在不影響數(shù)據(jù)庫(kù)應(yīng)用的前提下丧枪,應(yīng)該讓數(shù)據(jù)庫(kù)拒絕包含以下字符的輸入光涂。如分號(hào)分隔符,它是SQL注入式攻擊的主要幫兇拧烦。如注釋分隔符忘闻。注釋只有在數(shù)據(jù)設(shè)計(jì)的時(shí)候用的到。一般用戶(hù)的查詢(xún)語(yǔ)句中沒(méi)有必要注釋的內(nèi)容恋博,故可以直接把他拒絕掉齐佳,通常情況下這么做不會(huì)發(fā)生意外損失。把以上這些特殊符號(hào)拒絕掉债沮,那么即使在SQL語(yǔ)句中嵌入了惡意代碼炼吴,他們也將毫無(wú)作為。
故始終通過(guò)測(cè)試類(lèi)型疫衩、長(zhǎng)度硅蹦、格式和范圍來(lái)驗(yàn)證用戶(hù)輸入,過(guò)濾用戶(hù)輸入的內(nèi)容隧土。這是防止SQL注入式攻擊的常見(jiàn)并且行之有效的措施提针。