葉茂林,余發(fā)江
空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,武漢大學(xué)國家網(wǎng)絡(luò)安全學(xué)院,湖北 武漢 430072
0 引言
目前的大部分應(yīng)用都將應(yīng)用用戶的身份認(rèn)證信息、權(quán)限信息以及敏感資料都存儲(chǔ)在數(shù)據(jù)庫中。在這種情況下,要實(shí)現(xiàn)對(duì)應(yīng)用的訪問控制,一般可以使用的方法有兩種:一種是使用數(shù)據(jù)庫本身的訪問控制機(jī)制,另一種是在應(yīng)用層實(shí)現(xiàn)訪問控制。使用數(shù)據(jù)庫本身的訪問控制機(jī)制最大的缺陷在于數(shù)據(jù)庫連接池的廣泛使用使得DBMS(database management system)無法確定當(dāng)前應(yīng)用用戶。而在應(yīng)用層實(shí)現(xiàn)控制的方式分為硬編碼和使用安全框架兩種,硬編碼的方式依賴開發(fā)人員的編碼能力,難以保證應(yīng)用的安全性,使用安全框架可以提高安全性,但訪問控制功能的開發(fā)與數(shù)據(jù)庫、業(yè)務(wù)代碼、安全框架都有關(guān)聯(lián),因此仍然存在開發(fā)繁瑣、維護(hù)困難等問題。
Eykholt等[1]開 發(fā) 了SafeD,使 用 幻 影 提 ?。╬hantom extraction)技術(shù)來強(qiáng)制執(zhí)行符合訪問控制策略的SQL語句,避免了使用數(shù)據(jù)庫視圖,使得廣泛存在的視圖更新問題得到解決。SafeD通過擴(kuò)展JDBC的方式實(shí)現(xiàn),文獻(xiàn)[1]在Mysql和PostgreSQL上進(jìn)行了實(shí)驗(yàn),SafeD的效率和可用性良好。Mehta等[2]開發(fā)了一個(gè)既不依賴應(yīng)用程序正確性,也不依賴特定的數(shù)據(jù)庫支持的訪問控制系統(tǒng)Qpala。Qpa?la在數(shù)據(jù)庫適配器中實(shí)現(xiàn)。SafeD和Qpala都是基于傳統(tǒng)的RBAC(role-based access control,基于角色的訪問控制)開發(fā)的,而RBAC無法滿足日益復(fù)雜的應(yīng)用場(chǎng)景需求。并且SafeD和Qpala在數(shù)據(jù)庫與應(yīng)用層的中間層實(shí)現(xiàn),如JDBC驅(qū)動(dòng)。但不同種類的數(shù)據(jù)庫JDBC驅(qū)動(dòng)不同,擴(kuò)展JDBC時(shí)需要對(duì)每個(gè)JDBC驅(qū)動(dòng)進(jìn)行更改。
針對(duì)以上問題,本文提出了一種新的訪問控制解決方案SDBatis。SDBatis以CBAC(contextbased access control,基于上下文的訪問控制)作為訪問控制模型[3,4],同時(shí)解決了應(yīng)用訪問控制方式中開發(fā)繁瑣、維護(hù)困難的問題。相對(duì)于以往的工作,SDBatis對(duì)復(fù)雜的應(yīng)用場(chǎng)景和不同的數(shù)據(jù)庫具有更強(qiáng)的適應(yīng)性。
1 研究背景
1.1 數(shù)據(jù)庫訪問控制
應(yīng)用的訪問控制可以利用數(shù)據(jù)庫自身的訪問控制系統(tǒng)來實(shí)現(xiàn),目前流行的數(shù)據(jù)庫普遍支持創(chuàng)建和管理數(shù)據(jù)庫用戶,My SQL 8.0和Oracle還支持定義數(shù)據(jù)庫角色[5],使用這兩個(gè)功能可以完成表、列、視圖、存儲(chǔ)過程級(jí)別的訪問控制[6]。使用角色進(jìn)行訪問控制的示例為:
GRANT SELECT(emp_id)ON employee TO manager
上述示例的含義是將查詢employee表中emp_id列的權(quán)限賦予manager。本文給出的示例使用了一個(gè)虛擬的企業(yè)數(shù)據(jù)庫,其中包括兩張表,分別 為 職 員 表:employee(emp_id,name,gender,dept),職 員 工 資 表:emp_salary(emp_id,salary)。職員表包含職員的基本信息,職員工資表包含職員id和職員工資信息。
使用數(shù)據(jù)庫訪問控制機(jī)制的優(yōu)勢(shì)在于可以進(jìn)行細(xì)粒度的訪問控制(fine grained access control,F(xiàn)GAC),常見的方式為使用視圖控制權(quán)限。如圖1所示,CREATE VIEW語句表示創(chuàng)造一個(gè)包含職員名稱和工資的視圖;GRANT語句表示如果將查詢?cè)撘晥D的權(quán)限賦予manager角色,則manager角色只能查詢測(cè)試部門職員的名稱與工資信息。但是使用視圖的方式會(huì)面臨一個(gè)新問題:視圖更新問題[7,8]。一些數(shù)據(jù)庫開發(fā)商為了細(xì)粒度訪問控制開發(fā)了自己的系統(tǒng),如Oracle 11g中實(shí)現(xiàn)的VPD(vir?tual private database,虛擬專用數(shù)據(jù)庫)機(jī)制。VPD可以支持細(xì)粒度的訪問控制[9,10],它通過當(dāng)前數(shù)據(jù)庫用戶的“應(yīng)用上下文”和VPD策略重寫用戶的SQL語句,以強(qiáng)制執(zhí)行行級(jí)或列級(jí)安全性要求[11,12]。

圖1 使用視圖控制權(quán)限Fig.1 Use view control permissions
以上的訪問控制方式都需要以連接數(shù)據(jù)庫的用戶作為目標(biāo)或條件,但目前普遍采用數(shù)據(jù)庫連接池來解決資源問題[13,14]。在使用連接池的情況下,開發(fā)者會(huì)配置權(quán)限較大的數(shù)據(jù)庫用戶來連接數(shù)據(jù)庫,一個(gè)數(shù)據(jù)庫用戶會(huì)對(duì)應(yīng)多個(gè)應(yīng)用用戶。比如在Piwigo11.5.0的test_piwigo.php中[15],root用戶被配置為數(shù)據(jù)庫連接用戶,在應(yīng)用運(yùn)行時(shí),root用戶對(duì)應(yīng)的是所有的應(yīng)用用戶。在這種情況下,DBMS就沒有辦法確定當(dāng)前的應(yīng)用用戶,因此單純使用數(shù)據(jù)庫本身的訪問控制機(jī)制來實(shí)現(xiàn)應(yīng)用的訪問控制難以實(shí)現(xiàn)。
SDBatis基于MyBatis實(shí)現(xiàn),不依靠數(shù)據(jù)庫訪問控制機(jī)制,避免了連接池帶來的問題,同時(shí)其具有對(duì)數(shù)據(jù)庫進(jìn)行較細(xì)粒度的行級(jí)訪問控制的能力。
1.2 應(yīng)用層訪問控制
在應(yīng)用層實(shí)現(xiàn)訪問控制的方式分為兩種:一種是開發(fā)人員自己在代碼中嵌入判斷語句;另一種是使用安全框架。在Piwigo中,開發(fā)人員采用的是嵌入判斷語句的方式。如圖2所示,在Piwigo 11.5.0的group_perm.php文件中,falsify代表改動(dòng)狀態(tài),cat_true代表當(dāng)前類別的選中狀態(tài),開發(fā)人員對(duì)請(qǐng)求中這兩個(gè)參數(shù)進(jìn)行判斷,符合條件才定義SQL語句并執(zhí)行。嵌入代碼的方式對(duì)開發(fā)人員有較高的安全技術(shù)要求,并且在訪問控制策略較為復(fù)雜時(shí),訪問控制相關(guān)的代碼開發(fā)會(huì)非常繁瑣且難以維護(hù)。另外,安全性上,開發(fā)過程中出現(xiàn)漏洞幾乎是不可避免的。

圖2 Piwigo訪問控制代碼示例Fig.2 Piwigo access control code example
安全框架的典型是Apache Shiro[16]。安全框架根據(jù)會(huì)話中用戶的身份信息和設(shè)定的訪問控制策略來判斷當(dāng)前請(qǐng)求是否符合訪問控制策略。若不符合,會(huì)攔截資源請(qǐng)求。我們?cè)赗uoYi 4.6.1的us?er.html文件中找到了一個(gè)使用Shiro進(jìn)行按鈕訪問控制的示例[17]。應(yīng)用用戶向服務(wù)端請(qǐng)求顯示按鈕時(shí),由于此按鈕配置了shiro:hasPermission="sys?tem:user:add"語 句,Shiro將 會(huì)攔截該請(qǐng)求并在Realm類中尋找權(quán)限信息。如圖3所示,該函數(shù)在會(huì)話管理器中讀取當(dāng)前會(huì)話中的應(yīng)用用戶,根據(jù)用戶id通過持久層框架MyBatis在數(shù)據(jù)庫中查找角色和權(quán)限信息[18],然后將其添加在info中并返回給授權(quán)器。授權(quán)器將當(dāng)前用戶的權(quán)限信息與按鈕需要的"system:user:add"權(quán)限進(jìn)行比較以決定按鈕是否顯示。

圖3 RuoYi中Shiro流程示例Fig.3 Shiro process example in RuoYi
但在使用安全框架實(shí)現(xiàn)應(yīng)用訪問控制的方式中,開發(fā)人員需要完成的工作包括制定策略、實(shí)現(xiàn)策略和權(quán)限判斷。開發(fā)人員首先需要制定策略,然后將用戶、角色、權(quán)限及其關(guān)系定義在數(shù)據(jù)庫的表中以實(shí)現(xiàn)策略,最后在訪問敏感資源處添加安全相關(guān)代碼,在安全框架中配置權(quán)限信息的獲取方式以實(shí)現(xiàn)權(quán)限判斷。這會(huì)導(dǎo)致整個(gè)訪問控制功能與數(shù)據(jù)庫、業(yè)務(wù)代碼、安全框架都有關(guān)聯(lián)。由于安全相關(guān)代碼分布在各處,因此依然存在開發(fā)繁瑣、維護(hù)困難等問題。
本文提出的SDBatis避免了上述問題,在SDBatis中只需要配置訪問控制策略和獲取當(dāng)前應(yīng)用用戶上下文屬性就能夠完成訪問控制工作,使得開發(fā)和維護(hù)更為簡(jiǎn)便。
2 SDBatis設(shè)計(jì)
SDBatis的目標(biāo)包括:
1)基于持久層框架實(shí)現(xiàn),在保證訪問控制功能模塊獨(dú)立的前提下,能夠兼容不同的數(shù)據(jù)庫,能夠更準(zhǔn)確和方便地獲取應(yīng)用用戶上下文信息;應(yīng)用SDBatis時(shí)只需在持久層制定訪問控制策略、配置獲取當(dāng)前應(yīng)用用戶上下文屬性就能夠完成訪問控制工作,不再需要在業(yè)務(wù)代碼、安全框架等處編寫訪問控制相關(guān)代碼,也不再需要在數(shù)據(jù)庫中使用權(quán)限表格,減小應(yīng)用訪問控制功能開發(fā)和維護(hù)的成本。
2)使用CBAC作為訪問控制模型,相比于傳統(tǒng)的RBAC,更適用于動(dòng)態(tài)系統(tǒng),能實(shí)現(xiàn)更加靈活的訪問控制。
3)支持對(duì)數(shù)據(jù)庫的行級(jí)訪問控制,能夠確保應(yīng)用用戶無法訪問數(shù)據(jù)庫中超出其權(quán)限的行,從而最大程度地保證數(shù)據(jù)庫中的數(shù)據(jù)不會(huì)被越權(quán)訪問。
2.1 結(jié)構(gòu)設(shè)計(jì)
為實(shí)現(xiàn)上述目標(biāo),我們將SDBatis設(shè)計(jì)為如圖4所示的結(jié)構(gòu),主要包括SDBatis判斷器、訪問控制策略文件和SDBatis重寫器等。在業(yè)務(wù)邏輯需要與數(shù)據(jù)庫進(jìn)行交互時(shí),SDBatis將攔截所有經(jīng)過MyBatis的SQL語句相關(guān)對(duì)象,讀取訪問控制策略和應(yīng)用當(dāng)前用戶上下文信息,判斷當(dāng)前應(yīng)用用戶的上下文是否滿足訪問控制策略,然后根據(jù)判斷結(jié)果交給SDBatis重寫器進(jìn)行重寫,最后將SQL語句相關(guān)對(duì)象交還給MyBatis繼續(xù)執(zhí)行。

圖4 SDBatis結(jié)構(gòu)Fig.4 SDBatis structure
2.2 訪問控制策略定義
SDBatis的訪問控制策略以基于上下文的訪問控制為基礎(chǔ)。在基于上下文的訪問控制中,主體和請(qǐng)求的上下文是評(píng)估一個(gè)訪問請(qǐng)求的依據(jù)。我們借鑒了Shebaro等[19]描述在移動(dòng)設(shè)備中基于上下文的訪問控制模型的方法,并根據(jù)SDBatis的應(yīng)用場(chǎng)景做出了一些調(diào)整,策略定義如下:
定義1單個(gè)上下文屬性:CONTEXT=[CONTEXT_TYPE,CONTEXT_VALUE]。其中,CONTEXT_TYPE為上下文的類型,CONTEXT_VALUE代表上下文的值。
定義2上下文組c由多個(gè)CONTEXT組成:c=[CONTEXT 1,CONTEXT 2,CONTEXT 3,…]。
定義3訪問請(qǐng)求r=,其中s∈Sub?ject,為 應(yīng) 用 用 戶;o=[TABLE_NAME,ROW_VALUE,COLUMN_NAME]∈Object,代表訪問目標(biāo),為數(shù)據(jù)庫中表的行與列其中ROW_VALUE和COLUMN_NAME允許為“*”,代表任意行或列;a代表動(dòng)作組,a=[Action1,Action2,…],Action代表動(dòng)作,即為對(duì)數(shù)據(jù)庫中的條目進(jìn)行的操作,Action∈{“SELECT”,“INSERT”,“UPDATE”,“DE?LETE”}。
定義4訪問控制策略p=,其中r=[s,[TABLE_NAME,ROW_VALUE,COLUMN_NAME],a],c=[[CONTEXT_TYPE1,CON?TEXT_VALUE1],[CONTEXT_TYPE2,CON?TEXT_VALUE2]]。
2.3 訪問控制策略類型
根據(jù)上下文類型的不同,SDBatis中的訪問控制策略可以分為三類:環(huán)境策略、動(dòng)態(tài)行策略、連接策略。
環(huán)境策略:訪問環(huán)境指用戶發(fā)出請(qǐng)求時(shí)所擁有的上下文屬性,如設(shè)備信息、IP地址、訪問時(shí)間等。策略p1表示一條只允許用戶在早上9點(diǎn)到晚上7點(diǎn)之間對(duì)職員的工資信息進(jìn)行任何操作的策略,p1屬于限制訪問emp_salary表的策略。SDBatis中定義的時(shí)間格式為:“YY-MM-DD-hh:mm:ss”,其中YY代表年份,MM代表月份,DD代表日,hh代表小時(shí),mm代表分鐘,ss代表秒。那么p1的形式化表示如下

動(dòng)態(tài)行策略:SDBatis能夠完成行級(jí)的訪問控制,即限制應(yīng)用只能訪問數(shù)據(jù)庫中的哪一行或哪些行。在實(shí)際的應(yīng)用中,行策略往往需要根據(jù)當(dāng)前用戶的上下文而變化,如不同職員的職員id不同,策略限制其能夠訪問的數(shù)據(jù)庫表中的行也不同。SDBatis支持這樣的動(dòng)態(tài)表示。我們采用與MyBatis中表達(dá)動(dòng)態(tài)變量類似的語法來表示這樣的策略屬性,如在策略p2中使用了#{emp Id}表示當(dāng)前職員的id。策略p2表示職員只能查詢自己的工資信息,即只能查詢?cè)趀mp_salary表中emp_id與自己的職員id對(duì)應(yīng)的一行。p2的形式化表示如下

連接策略:在實(shí)際應(yīng)用中,SQL語句中往往會(huì)出現(xiàn)多表聯(lián)合查詢的情況,這種情況下策略依然以行策略的方式表示,但在判斷和重寫階段,SDBatis會(huì)分析當(dāng)前SQL語句中涉及的所有表以及策略中對(duì)應(yīng)的限制條件。
3 SDBatis實(shí)現(xiàn)
3.1 策略實(shí)現(xiàn)
在SDBatis中,訪問控制策略使用xml文件存儲(chǔ),以基于上下文的訪問控制規(guī)則制定,角色、環(huán)境都被視為上下文屬性。xml文件的大致結(jié)構(gòu)為:在根節(jié)點(diǎn)下包含若干個(gè)節(jié)點(diǎn),代表當(dāng)前用戶的角色上下文;每一個(gè)role的策略分為讀寫兩種,使用和標(biāo)簽表示;讀寫策略再細(xì)分為各個(gè)表的策略,每一個(gè)標(biāo)簽代表一張表,而標(biāo)簽內(nèi)的每個(gè)標(biāo)簽代表一條限制條件,其中定義了具體的限制條件類型、限制值等。3.2 功能實(shí)現(xiàn)
SDBatis主要在MyBatis的基礎(chǔ)上增加了3個(gè)文件:sdbatis-strategy.xml、SDBatisInterceptor.java和SDBatisUtils.java。其中,sdbatis-strategy.xml為訪問控制策略文件;SDBatisInterceptor.java為SDBatis主體文件,SDBatis判斷器、重寫器都包含在這個(gè)文件中;SDBatisUtils.java中儲(chǔ)存工具函數(shù)。
MyBatis插件機(jī)制為攔截SQL語句相關(guān)的對(duì)象和對(duì)它們進(jìn)行操作提供了接口,SDBatis攔截器攔截MyBatis的Executor類中的query和update函數(shù),在這兩個(gè)函數(shù)執(zhí)行前攔截器會(huì)讀取函數(shù)變量。在MyBatis中,SELECT語句的處理將會(huì)調(diào)用query函數(shù),而DELETE、UPDATE、INSERT語句的處理會(huì)調(diào)用update函數(shù),所以query和update變量中包含了該次調(diào)用對(duì)數(shù)據(jù)庫的請(qǐng)求的具體參數(shù)。獲取到參數(shù)后,SDBatis從應(yīng)用層獲得當(dāng)前應(yīng)用用戶上下文信息,然后讀取訪問控制策略文件,根據(jù)用戶上下文、訪問控制策略、SQL語句進(jìn)行判斷,如果當(dāng)前執(zhí)行的對(duì)象與訪問控制策略不相關(guān),則不進(jìn)行處理;如果相關(guān),SDBatis會(huì)重寫變量,使變量符合訪問控制策略中的限制,從而確保發(fā)送給數(shù)據(jù)庫的SQL語句不會(huì)超出當(dāng)前用戶的權(quán)限,達(dá)到對(duì)數(shù)據(jù)庫的行的訪問控制的目的。最后,SDBatis用重寫后的變量替換函數(shù)中原來的變量,剩余的執(zhí)行過程交回給My Batis。SDBatis判斷器和重寫方法是SDBatis中的兩個(gè)重要組成部分,下面對(duì)它們進(jìn)行描述。
SDBatis判斷器:判斷器的主要功能是判斷當(dāng)前執(zhí)行的SQL語句相關(guān)對(duì)象與訪問控制策略是否相關(guān)。這個(gè)過程需要讀取訪問控制策略文件和解析SQL語句。dom4j是一個(gè)處理xml文件的工具[20],它解決了訪問控制策略文件的讀取和解析問題;JSqlParser是一個(gè)常用的解析SQL語句的工具[21],但由于其效率較差,我們只用它對(duì)SQL語句進(jìn)行了簡(jiǎn)單的分析,提取SQL語句中包含的表名、WHERE語句表。后續(xù)的判斷中,首先根據(jù)表名稱找到限制條件,再將限制條件與當(dāng)前用戶上下文進(jìn)行對(duì)比,如果沒有對(duì)應(yīng)的限制條件或滿足限制條件則不做處理;若不滿足限制條件,則根據(jù)限制條件的種類將當(dāng)前的請(qǐng)求置為空或重寫當(dāng)前SQL語句相關(guān)對(duì)象。
重寫方法:在MyBatis中對(duì)SQL語句進(jìn)行重寫并不能通過簡(jiǎn)單地替換SQL語句中的字符串完成。在MyBatis的設(shè)計(jì)里,SQL語句支持動(dòng)態(tài)變量,MyBatis插件的功能局限性使得SDBatis攔截器無法直接攔截到最終執(zhí)行的SQL語句,而只能獲取到未填寫變量的SQL語句和變量對(duì)象。我們研究了這些對(duì)象,設(shè)計(jì)了替換和添加兩種方式來完成對(duì)不同SQL語句的重寫功能。若WHERE語句中已經(jīng)包含限制類型但值與策略不符時(shí)使用替換的方法,替換指使用訪問控制策略中規(guī)定的值替換當(dāng)前參數(shù)中的變量;若WHERE語句中不包含限制類型,需要重寫時(shí),在未填寫變量的SQL語句后添加AND語句,如此也能完成對(duì)SQL語句的訪問限制。在該過程中有一個(gè)特例,INSERT語句不包含WHERE子句,因此處理方式與其他語句不同。我們對(duì)INSERT語句的處理方式相對(duì)簡(jiǎn)單,只需要判斷當(dāng)前用戶上下文是否滿足對(duì)當(dāng)前SQL語句中相關(guān)表的插入要求,若有,則允許插入;若沒有,則禁止插入。
4 實(shí)驗(yàn)與分析
4.1 實(shí)驗(yàn)方案
SDBatis支持以MyBatis作為持久層框架的應(yīng)用。實(shí)驗(yàn)中,我們選擇了在github上擁有1.1k Star的RuoYi作為實(shí)驗(yàn)對(duì)象,實(shí)現(xiàn)了SDBatis的一個(gè)原型?;赗uoYi項(xiàng)目的基本業(yè)務(wù)邏輯,策略文件中的測(cè)試訪問控制策略配置如表1所示。

表1 測(cè)試訪問控制策略配置Table 1 Test security access control policy configuration
以未使用SDBatis的RuoYi應(yīng)用執(zhí)行的請(qǐng)求為基準(zhǔn)(base),根據(jù)設(shè)定的訪問控制策略和RuoYi的業(yè)務(wù)邏輯,我們制定了3組對(duì)照實(shí)驗(yàn)。第1組實(shí)驗(yàn)將使用硬編碼和SDBatis進(jìn)行權(quán)限控制的方法和基準(zhǔn)值進(jìn)行比較,其中測(cè)試硬編碼方法時(shí)對(duì)RuoYi源代碼進(jìn)行了人工分析和簡(jiǎn)單修改。第2組實(shí)驗(yàn)中請(qǐng)求被分為6類,每一類請(qǐng)求的類型和描述如表2中所示,該組實(shí)驗(yàn)主要測(cè)試了SDBatis在各類訪問控制條件下的表現(xiàn)。第3組實(shí)驗(yàn)重點(diǎn)測(cè)試行策略請(qǐng)求,請(qǐng)求共分為3類,包括簡(jiǎn)單行策略請(qǐng)求、嵌套查詢請(qǐng)求、連接策略請(qǐng)求等,3類請(qǐng)求分別在RuoYi原生和使用SDBatis之后兩種場(chǎng)景下測(cè)試。

表2 測(cè)試請(qǐng)求Table 2 Test request
實(shí)驗(yàn)測(cè)試的環(huán)境為:Inter Xeon E3-1230 V 2 3.3 GHz CPU,16 GB RAM,256 GB SSD,WINDOWS 10操作系統(tǒng),IntelliJIDEA開發(fā)工具,RuoYi 4.6.2。實(shí)驗(yàn)測(cè)試分為功能測(cè)試和性能測(cè)試兩部分。功能測(cè)試指對(duì)SDBatis能否完成預(yù)期功能的測(cè)試,測(cè)試的主要方法為人工檢驗(yàn)請(qǐng)求的測(cè)試結(jié)果與預(yù)期結(jié)果是否匹配;性能測(cè)試指測(cè)試每一類請(qǐng)求運(yùn)行的時(shí)間,對(duì)比各種情況下運(yùn)行時(shí)間的差異,從而研究SDBatis對(duì)應(yīng)用運(yùn)行效率的影響。
執(zhí)行測(cè)試請(qǐng)求時(shí),每一類測(cè)試分別執(zhí)行100次并計(jì)算平均時(shí)間,每次執(zhí)行時(shí)使用SpringBoot中的StopWatch工具對(duì)程序運(yùn)行時(shí)間進(jìn)行記錄和計(jì)算[22]。
4.2 結(jié)果與分析
實(shí)驗(yàn)結(jié)果分為功能測(cè)試結(jié)果和性能測(cè)試結(jié)果兩部分。在3組實(shí)驗(yàn)的功能測(cè)試中,SDBatis成功達(dá)到了對(duì)時(shí)間策略、IP策略、動(dòng)態(tài)行策略請(qǐng)求處理的預(yù)期。我們?nèi)斯し治隽薘uoYi本身的訪問控制方法,并將SDBatis與其進(jìn)行比較,得到如表3中所示的結(jié)果。結(jié)果表明使用SDBatis后只需要配置訪問控制策略文件即可完成權(quán)限判斷,降低了訪問控制功能開發(fā)的成本,且SDBatis支持行級(jí)訪問控制,比RuoYi原生的訪問控制方式更加靈活。

表3 訪問控制功能比較Table 3 Compar ison of access contr ol functions
第1組實(shí)驗(yàn)的性能測(cè)試結(jié)果如表4所示,結(jié)果表明,相比于RuoYi使用安全框架進(jìn)行訪問控制的方式,使用硬編碼所需時(shí)間減少了約7%,而使用SDBatis的方式增加了約20%的時(shí)間。第2組實(shí)驗(yàn)的性能測(cè)試結(jié)果如圖5,time1和time2分別代表滿足和不滿足訪問控制策略的時(shí)間相關(guān)請(qǐng)求,IP1和IP2分別代表滿足和不滿足訪問控制策略的IP相關(guān)請(qǐng)求,row代表動(dòng)態(tài)行策略請(qǐng)求。使用SDBatis后,時(shí)間策略和IP地址策略相關(guān)請(qǐng)求的運(yùn)行時(shí)間增加了約20%,而行策略請(qǐng)求運(yùn)行時(shí)間增加了34%。行策略請(qǐng)求運(yùn)行時(shí)間更長(zhǎng),這可能是因?yàn)樵谔幚硇胁呗哉?qǐng)求中需要對(duì)SQL語句進(jìn)行分析和重寫。

圖5 各類策略請(qǐng)求測(cè)試運(yùn)行時(shí)間Fig.5 Various types of strategy request test run time

表4 不同訪問控制方式耗時(shí)Table 4 Running time of different access control ways
圖6顯示了第3組實(shí)驗(yàn)的性能測(cè)試結(jié)果,在RuoYi原生訪問控制下,請(qǐng)求的執(zhí)行時(shí)間變化較小,而在使用SDBatis后,嵌套查詢請(qǐng)求和連接策略請(qǐng)求會(huì)分別多花費(fèi)6%和8%的時(shí)間,原因可能是這兩類請(qǐng)求的SQL語句更為復(fù)雜,所需的分析時(shí)間更長(zhǎng)。綜合3組實(shí)驗(yàn)結(jié)果,我們發(fā)現(xiàn)SDBatis對(duì)應(yīng)用性能有一定的影響,但在SDBatis帶來的優(yōu)勢(shì)下,這種程度的性能影響是可以接受的。

圖6 行策略請(qǐng)求測(cè)試運(yùn)行時(shí)間Fig.6 Row strategy request test run time
5 結(jié)語
本文提出了一種新的對(duì)應(yīng)用的訪問控制解決方案:SDBatis。相比于以往的訪問控制系統(tǒng),SDBatis可以讓開發(fā)人員在持久層中完成訪問控制工作,降低了訪問控制功能開發(fā)的成本。另外,SDBatis基于CBAC和MyBatis插件模型開發(fā),與前人研究開發(fā)的SafeD和Qpala相比,SDBatis中以CBAC的訪問控制模型為基礎(chǔ),環(huán)境策略和動(dòng)態(tài)行策略使其能夠適應(yīng)日益復(fù)雜的訪問環(huán)境,而基于MyBatis開發(fā)的理念使其能被各類使用MyBatis作為持久層框架的應(yīng)用使用。在實(shí)際應(yīng)用中,SDBatis帶來的延遲也是可以接受的。未來,我們希望能設(shè)計(jì)出兼容性更高、適用性更廣、使用門檻更低的訪問控制系統(tǒng),SDBatis只是一次初步的嘗試。在SDBatis中,持久層框架MyBatis是基礎(chǔ),而未來的研究將不限于單一的框架。最后,SDBatis在處理SQL語句和策略文件時(shí)的效率還有待提高,對(duì)于復(fù)雜SQL語句的判斷和重寫仍需進(jìn)一步完善。
狂野欧美激情性xxxx在线观看|
午夜福利在线观看免费完整高清在|
国产伦精品一区二区三区四那|
内射极品少妇av片p|
成年女人看的毛片在线观看|
国产免费福利视频在线观看|
日韩一本色道免费dvd|
日产精品乱码卡一卡2卡三|
人人妻人人澡欧美一区二区|
www日本黄色视频网|
亚洲av男天堂|
综合色av麻豆|
69人妻影院|
一个人观看的视频www高清免费观看|
丰满乱子伦码专区|
丰满乱子伦码专区|
视频中文字幕在线观看|
观看美女的网站|
亚洲av熟女|
嫩草影院入口|
男人的好看免费观看在线视频|
日韩亚洲欧美综合|
狂野欧美白嫩少妇大欣赏|
免费在线观看成人毛片|
婷婷色av中文字幕|
国产久久久一区二区三区|
麻豆成人av视频|
日韩av在线免费看完整版不卡|
国产精品人妻久久久影院|
午夜老司机福利剧场|
内地一区二区视频在线|
小说图片视频综合网站|
亚洲av成人精品一二三区|
精品免费久久久久久久清纯|
国产精品蜜桃在线观看|
免费无遮挡裸体视频|
精华霜和精华液先用哪个|
偷拍熟女少妇极品色|
久久精品夜色国产|
欧美日韩国产亚洲二区|
婷婷色综合大香蕉|
亚洲国产成人一精品久久久|
内射极品少妇av片p|
欧美日本亚洲视频在线播放|
九九热线精品视视频播放|
国产人妻一区二区三区在|
夜夜爽夜夜爽视频|
婷婷色麻豆天堂久久
|
成人无遮挡网站|
午夜福利在线观看免费完整高清在|
国产精品1区2区在线观看.|
亚洲电影在线观看av|
99视频精品全部免费 在线|
成人三级黄色视频|
亚洲aⅴ乱码一区二区在线播放|
蜜桃亚洲精品一区二区三区|
麻豆成人av视频|
中文欧美无线码|
舔av片在线|
麻豆乱淫一区二区|
亚洲最大成人中文|
www.色视频.com|
美女内射精品一级片tv|
亚洲在线观看片|
日本-黄色视频高清免费观看|
最近最新中文字幕免费大全7|
一边摸一边抽搐一进一小说|
亚洲丝袜综合中文字幕|
亚洲乱码一区二区免费版|
偷拍熟女少妇极品色|
啦啦啦啦在线视频资源|
国产精品1区2区在线观看.|
久久99热这里只有精品18|
精品久久久久久久末码|
久久久精品大字幕|
国产av在哪里看|
淫秽高清视频在线观看|
久久精品夜色国产|
大香蕉久久网|
日韩大片免费观看网站
|
黄色欧美视频在线观看|
久久99精品国语久久久|
av在线天堂中文字幕|
啦啦啦啦在线视频资源|
黄色配什么色好看|
久久亚洲精品不卡|
在现免费观看毛片|
国产淫语在线视频|
在线观看av片永久免费下载|
欧美性感艳星|
亚洲精品一区蜜桃|
纵有疾风起免费观看全集完整版
|
美女xxoo啪啪120秒动态图|
少妇熟女欧美另类|
国产黄片美女视频|
中文精品一卡2卡3卡4更新|
好男人在线观看高清免费视频|
亚洲三级黄色毛片|
国产精品无大码|
成人午夜高清在线视频|
国产大屁股一区二区在线视频|
国产午夜福利久久久久久|
精品午夜福利在线看|
久久久国产成人免费|
成人欧美大片|
av国产免费在线观看|
国产免费视频播放在线视频
|
少妇高潮的动态图|
亚洲av成人av|
成年免费大片在线观看|
久久鲁丝午夜福利片|
国产不卡一卡二|
国产成人a∨麻豆精品|
直男gayav资源|
亚洲中文字幕日韩|
АⅤ资源中文在线天堂|
建设人人有责人人尽责人人享有的
|
亚洲三级黄色毛片|
免费观看a级毛片全部|
毛片一级片免费看久久久久|
大又大粗又爽又黄少妇毛片口|
久久热精品热|
欧美性猛交╳xxx乱大交人|
干丝袜人妻中文字幕|
亚洲国产精品合色在线|
国产成人免费观看mmmm|
免费黄色在线免费观看|
99久久九九国产精品国产免费|
99久久精品热视频|
在线免费观看不下载黄p国产|
中国美白少妇内射xxxbb|
免费观看a级毛片全部|
六月丁香七月|
国产激情偷乱视频一区二区|
久久精品国产自在天天线|
国模一区二区三区四区视频|
日韩视频在线欧美|
欧美日韩精品成人综合77777|
午夜福利在线观看吧|
亚洲在线观看片|
国产三级中文精品|
欧美成人一区二区免费高清观看|
亚洲在线自拍视频|
深夜a级毛片|
亚洲婷婷狠狠爱综合网|
亚洲成av人片在线播放无|
哪个播放器可以免费观看大片|
国产成人a∨麻豆精品|
一级爰片在线观看|
久久国产乱子免费精品|
亚洲欧美日韩高清专用|
亚洲国产精品合色在线|
色哟哟·www|
麻豆av噜噜一区二区三区|
内射极品少妇av片p|
www.色视频.com|
简卡轻食公司|
欧美最新免费一区二区三区|
激情 狠狠 欧美|
老司机福利观看|
一级黄色大片毛片|
免费看美女性在线毛片视频|
天堂影院成人在线观看|
99热精品在线国产|
成年女人看的毛片在线观看|
天美传媒精品一区二区|
可以在线观看毛片的网站|
黄片无遮挡物在线观看|
毛片女人毛片|
亚洲欧美日韩东京热|
搡女人真爽免费视频火全软件|
久久国内精品自在自线图片|
国产探花极品一区二区|
国产精品三级大全|
午夜福利成人在线免费观看|
91久久精品电影网|
久久韩国三级中文字幕|
小蜜桃在线观看免费完整版高清|
亚洲av.av天堂|
能在线免费观看的黄片|
国产精品一区二区在线观看99
|
or卡值多少钱|
99热这里只有是精品50|
国产不卡一卡二|
在现免费观看毛片|
精品酒店卫生间|
久久久久久久久大av|
亚洲精品影视一区二区三区av|
国产亚洲最大av|
久久久成人免费电影|
色哟哟·www|
日本爱情动作片www.在线观看|
国产精品蜜桃在线观看|
久久鲁丝午夜福利片|
搡女人真爽免费视频火全软件|
国产精品久久久久久av不卡|
亚洲久久久久久中文字幕|
久久鲁丝午夜福利片|
在线观看一区二区三区|
永久网站在线|
我的女老师完整版在线观看|
成人漫画全彩无遮挡|
国产老妇伦熟女老妇高清|
99热这里只有是精品50|
午夜福利网站1000一区二区三区|
国产成人免费观看mmmm|
男插女下体视频免费在线播放|
国产激情偷乱视频一区二区|
亚洲欧美精品自产自拍|
免费不卡的大黄色大毛片视频在线观看
|
天堂影院成人在线观看|
网址你懂的国产日韩在线|
欧美日本亚洲视频在线播放|
美女黄网站色视频|
亚洲综合精品二区|
av线在线观看网站|
亚洲av二区三区四区|
又粗又爽又猛毛片免费看|
观看免费一级毛片|
亚洲精品aⅴ在线观看|
国产精品一区二区三区四区久久|
一级毛片我不卡|
亚洲国产成人一精品久久久|
国产探花极品一区二区|
国产极品天堂在线|
91久久精品国产一区二区三区|
久99久视频精品免费|
亚洲精品乱码久久久v下载方式|
日本免费在线观看一区|
亚洲欧美成人综合另类久久久
|
久久久久久久久久久丰满|
欧美日韩一区二区视频在线观看视频在线
|
亚州av有码|
99久国产av精品国产电影|
观看免费一级毛片|
成年女人看的毛片在线观看|
免费电影在线观看免费观看|
成人av在线播放网站|
国产又色又爽无遮挡免|
亚洲欧美日韩无卡精品|
亚洲aⅴ乱码一区二区在线播放|
在线播放国产精品三级|
亚洲成人av在线免费|
久久亚洲精品不卡|
午夜免费激情av|
久久精品夜色国产|
国产精品一区二区在线观看99
|
成年版毛片免费区|
久久热精品热|
最近视频中文字幕2019在线8|
日本欧美国产在线视频|
日本一本二区三区精品|
国产高潮美女av|
欧美性感艳星|
一级黄片播放器|
一个人看视频在线观看www免费|
97人妻精品一区二区三区麻豆|
99国产精品一区二区蜜桃av|
老司机福利观看|
一个人看的www免费观看视频|
美女大奶头视频|
卡戴珊不雅视频在线播放|
av黄色大香蕉|
天堂中文最新版在线下载
|
国模一区二区三区四区视频|
国产一区有黄有色的免费视频
|
尾随美女入室|
亚洲欧美精品自产自拍|
精品午夜福利在线看|
三级国产精品片|
久久久欧美国产精品|
日本五十路高清|
91久久精品国产一区二区成人|
嘟嘟电影网在线观看|
精品国产一区二区三区久久久樱花
|
日韩国内少妇激情av|
日本免费一区二区三区高清不卡|
一级二级三级毛片免费看|
干丝袜人妻中文字幕|
精品国产一区二区三区久久久樱花
|
人人妻人人澡人人爽人人夜夜
|
欧美日韩在线观看h|
青青草视频在线视频观看|
av线在线观看网站|
在线观看av片永久免费下载|
欧美一区二区亚洲|
国产高潮美女av|
成年女人永久免费观看视频|
三级毛片av免费|
国产激情偷乱视频一区二区|
欧美一区二区精品小视频在线|
欧美性猛交黑人性爽|
国产单亲对白刺激|
国产亚洲精品av在线|
免费观看a级毛片全部|
精品久久久久久久末码|
观看免费一级毛片|
亚洲电影在线观看av|
国产成人福利小说|
极品教师在线视频|
国内精品一区二区在线观看|
九九在线视频观看精品|
身体一侧抽搐|
国产 一区精品|
videossex国产|
欧美一级a爱片免费观看看|
夜夜看夜夜爽夜夜摸|
国产亚洲午夜精品一区二区久久
|
天堂中文最新版在线下载
|
精品99又大又爽又粗少妇毛片|
国产精品久久久久久久电影|
国产精品,欧美在线|
老司机影院成人|
日日摸夜夜添夜夜添av毛片|
亚洲欧洲国产日韩|
能在线免费看毛片的网站|
日本一本二区三区精品|
成人毛片60女人毛片免费|
精品久久国产蜜桃|
18禁动态无遮挡网站|
国产精品综合久久久久久久免费|
午夜亚洲福利在线播放|
99久久成人亚洲精品观看|
永久网站在线|
国产精品日韩av在线免费观看|
国产精品一二三区在线看|
久久久久久久久久成人|
看非洲黑人一级黄片|
日日干狠狠操夜夜爽|
中文字幕免费在线视频6|
av福利片在线观看|
亚洲国产欧美人成|
99久国产av精品|
色网站视频免费|
最近视频中文字幕2019在线8|
乱码一卡2卡4卡精品|
国产成人精品久久久久久|
亚洲欧洲日产国产|
久久精品国产鲁丝片午夜精品|
亚洲精品自拍成人|
一个人观看的视频www高清免费观看|
欧美97在线视频|
国产午夜精品久久久久久一区二区三区|
少妇猛男粗大的猛烈进出视频
|
天堂√8在线中文|
a级毛色黄片|
99视频精品全部免费 在线|
免费观看性生交大片5|
国产成人a区在线观看|
免费看a级黄色片|
一本久久精品|
亚洲,欧美,日韩|
国产成人免费观看mmmm|
国产精品一区www在线观看|
成人高潮视频无遮挡免费网站|
亚洲伊人久久精品综合
|
日韩欧美在线乱码|
国产 一区精品|
丰满少妇做爰视频|
精品久久久久久久人妻蜜臀av|
七月丁香在线播放|
青春草国产在线视频|
日本黄色视频三级网站网址|
国产亚洲最大av|
丝袜喷水一区|
日韩av不卡免费在线播放|
卡戴珊不雅视频在线播放|
国产在视频线在精品|
汤姆久久久久久久影院中文字幕
|
亚洲国产欧洲综合997久久,|
久久久国产成人精品二区|
亚洲中文字幕日韩|
91在线精品国自产拍蜜月|
久热久热在线精品观看|
国产精品一区二区在线观看99
|
av免费观看日本|
午夜福利视频1000在线观看|
国产伦一二天堂av在线观看|
久久久成人免费电影|
99热这里只有是精品在线观看|
亚洲av二区三区四区|
国产精品三级大全|
欧美另类亚洲清纯唯美|
国产成人精品久久久久久|
日本爱情动作片www.在线观看|
级片在线观看|
精品人妻偷拍中文字幕|
我要看日韩黄色一级片|
久久精品国产鲁丝片午夜精品|
欧美又色又爽又黄视频|
性色avwww在线观看|
亚洲无线观看免费|
亚洲国产精品专区欧美|
一级毛片我不卡|
国产亚洲精品av在线|
国产精品,欧美在线|
人妻系列 视频|
国产高清不卡午夜福利|
听说在线观看完整版免费高清|
观看免费一级毛片|
av播播在线观看一区|
好男人在线观看高清免费视频|
国产精品国产高清国产av|
丰满乱子伦码专区|
高清在线视频一区二区三区
|
av在线天堂中文字幕|
亚洲在线自拍视频|
色噜噜av男人的天堂激情|
非洲黑人性xxxx精品又粗又长|
熟女电影av网|
在线观看美女被高潮喷水网站|
日日摸夜夜添夜夜添av毛片|
亚洲欧美日韩卡通动漫|
人体艺术视频欧美日本|
好男人在线观看高清免费视频|
中文天堂在线官网|
建设人人有责人人尽责人人享有的
|
九色成人免费人妻av|
亚洲av中文字字幕乱码综合|
听说在线观看完整版免费高清|
国产精品99久久久久久久久|
99久久无色码亚洲精品果冻|
亚洲电影在线观看av|
麻豆成人午夜福利视频|
亚洲精品,欧美精品|
成人亚洲欧美一区二区av|
亚洲精品国产av成人精品|
午夜福利在线观看免费完整高清在|
国产片特级美女逼逼视频|
久久久亚洲精品成人影院|
国产乱来视频区|
av国产免费在线观看|
国产久久久一区二区三区|
美女黄网站色视频|
小蜜桃在线观看免费完整版高清|
搡老妇女老女人老熟妇|
欧美最新免费一区二区三区|
国产片特级美女逼逼视频|
又粗又爽又猛毛片免费看|
中文字幕精品亚洲无线码一区|
日本-黄色视频高清免费观看|
一区二区三区免费毛片|
国产白丝娇喘喷水9色精品|
videossex国产|
国产成人精品久久久久久|
狂野欧美白嫩少妇大欣赏|
欧美精品一区二区大全|
欧美xxxx黑人xx丫x性爽|
超碰97精品在线观看|
久久精品夜夜夜夜夜久久蜜豆|
久久人人爽人人片av|
美女大奶头视频|
99久久人妻综合|
在线免费观看的www视频|
日韩一区二区视频免费看|
18禁在线播放成人免费|
黄色日韩在线|
亚洲欧美中文字幕日韩二区|
国产午夜精品久久久久久一区二区三区|
亚洲国产成人一精品久久久|
日韩欧美三级三区|
人人妻人人看人人澡|
视频中文字幕在线观看|
最近中文字幕2019免费版|
国产老妇伦熟女老妇高清|
午夜福利在线在线|
蜜桃久久精品国产亚洲av|
七月丁香在线播放|
赤兔流量卡办理|
日本av手机在线免费观看|
av福利片在线观看|
国产精品一区www在线观看|
亚洲欧美精品专区久久|
日本三级黄在线观看|
亚洲18禁久久av|
日韩欧美在线乱码|
国产成人a∨麻豆精品|
国产极品精品免费视频能看的|
午夜激情福利司机影院|
午夜a级毛片|
久久久精品大字幕|
一级毛片久久久久久久久女|
av天堂中文字幕网|
水蜜桃什么品种好|
日本色播在线视频|
亚洲人成网站高清观看|
舔av片在线|
国产白丝娇喘喷水9色精品|
国产精品熟女久久久久浪|
婷婷色麻豆天堂久久
|
村上凉子中文字幕在线|
级片在线观看|
久久久久久大精品|
国产毛片a区久久久久|
亚洲最大成人手机在线|
亚洲自拍偷在线|
亚洲国产精品国产精品|
一级毛片电影观看
|
一级毛片电影观看
|
精品久久久久久久久av|
大又大粗又爽又黄少妇毛片口|
长腿黑丝高跟|
亚洲在久久综合|
男人的好看免费观看在线视频|
久久欧美精品欧美久久欧美|
久久精品国产亚洲av天美|
国产成人精品婷婷|
欧美人与善性xxx|
国语对白做爰xxxⅹ性视频网站|
日韩人妻高清精品专区|
欧美另类亚洲清纯唯美|
少妇的逼好多水|
国产成人freesex在线|
美女cb高潮喷水在线观看|
日本五十路高清|
99久久成人亚洲精品观看|
色综合站精品国产|
人人妻人人澡人人爽人人夜夜
|
国产单亲对白刺激|
亚洲精品色激情综合|
久久久久免费精品人妻一区二区|
日韩高清综合在线|
久久99精品国语久久久|
亚洲天堂国产精品一区在线|
中国国产av一级|
.国产精品久久|
久久精品夜色国产|
久久久成人免费电影|
小蜜桃在线观看免费完整版高清|
嫩草影院入口|
神马国产精品三级电影在线观看|
在线播放国产精品三级|
激情 狠狠 欧美|
欧美日韩综合久久久久久|
国产黄色视频一区二区在线观看
|
精品国内亚洲2022精品成人|
日韩成人av中文字幕在线观看|
亚洲中文字幕日韩|
美女高潮的动态|
亚洲精品乱久久久久久|
搞女人的毛片|
国产老妇伦熟女老妇高清|
av国产免费在线观看|
欧美97在线视频|
亚洲av熟女|
一区二区三区高清视频在线|
女的被弄到高潮叫床怎么办|
床上黄色一级片|
国产精品一区二区三区四区免费观看|
简卡轻食公司|
亚洲美女视频黄频|
亚洲精华国产精华液的使用体验|
最后的刺客免费高清国语|
av在线观看视频网站免费|
特大巨黑吊av在线直播|
男人舔女人下体高潮全视频|
日韩欧美国产在线观看|
免费不卡的大黄色大毛片视频在线观看
|
亚洲一级一片aⅴ在线观看|
国产综合懂色|
АⅤ资源中文在线天堂|
欧美+日韩+精品|
精品欧美国产一区二区三|
五月伊人婷婷丁香|
av专区在线播放|
亚洲精品影视一区二区三区av|
男人舔奶头视频|
中文字幕人妻熟人妻熟丝袜美|
国产精品精品国产色婷婷|
国产av码专区亚洲av|
免费看av在线观看网站|
天堂√8在线中文|
女人久久www免费人成看片
|
久久精品夜夜夜夜夜久久蜜豆|
亚洲av中文字字幕乱码综合|
欧美成人一区二区免费高清观看|
av播播在线观看一区|
黄色欧美视频在线观看|
少妇猛男粗大的猛烈进出视频
|
你懂的网址亚洲精品在线观看
|
亚洲精品乱久久久久久|
亚洲欧美日韩东京热|
精品人妻熟女av久视频|
免费av毛片视频|
国产伦一二天堂av在线观看|
99在线视频只有这里精品首页|
久久精品夜夜夜夜夜久久蜜豆|
国产又色又爽无遮挡免|
国产亚洲av嫩草精品影院|
国产一区二区在线观看日韩|
少妇的逼水好多|
能在线免费看毛片的网站|
精品人妻视频免费看|
成人综合一区亚洲|
亚洲五月天丁香|
国产三级在线视频|
联通29元200g的流量卡|
一区二区三区免费毛片|
亚洲欧美日韩无卡精品|
99久久精品一区二区三区|
国语对白做爰xxxⅹ性视频网站|
亚洲国产精品sss在线观看|
一级毛片aaaaaa免费看小|
欧美成人一区二区免费高清观看|
亚洲欧美日韩无卡精品|
av专区在线播放|
日韩高清综合在线|
精华霜和精华液先用哪个|
少妇的逼水好多|
亚洲最大成人手机在线|
成人国产麻豆网|
久久久久免费精品人妻一区二区|
99在线视频只有这里精品首页|
精品久久久久久电影网
|
亚洲va在线va天堂va国产|