999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于微信云數(shù)據(jù)庫的CRUD操作工具的設(shè)計(jì)與實(shí)現(xiàn)

2023-04-27 04:00:42馮嘉潤劉穎
電腦知識(shí)與技術(shù) 2023年7期

馮嘉潤 劉穎

關(guān)鍵詞:微信云數(shù)據(jù)庫;Java;SQL語句;SQL注入;多線程

0 引言

隨著微信小程序的不斷普及,小程序也成為眾多開發(fā)者的開發(fā)目標(biāo)。而在開發(fā)小程序的同時(shí),也會(huì)用到和小程序相對應(yīng)的微信云數(shù)據(jù)庫用來存儲(chǔ)小程序的數(shù)據(jù)信息[1],此時(shí)為了能夠更好地統(tǒng)計(jì)和處理這些數(shù)據(jù),通常會(huì)使用第三方的系統(tǒng)平臺(tái)來對這些數(shù)據(jù)進(jìn)行處理。但是目前官方并未提供對微信云數(shù)據(jù)庫操作的Java工具類,這讓開發(fā)者在處理微信云中的數(shù)據(jù)需要自己手動(dòng)去封裝這些接口[2]從而導(dǎo)致開發(fā)效率的降低。同時(shí),開發(fā)過程可能也會(huì)由于開發(fā)者的疏忽導(dǎo)致編碼的安全性不高引發(fā)不必要的安全漏洞。

通過Java開發(fā)一款可以直接調(diào)用工具內(nèi)方法操作微信云數(shù)據(jù)庫的Jar包工具。用戶可以直接通過調(diào)用包內(nèi)的方法傳入對應(yīng)的SQL語句參數(shù)即可由工具代替用戶用已經(jīng)封裝好的方法請求微信云數(shù)據(jù)對應(yīng)的接口并獲取相應(yīng)的返回?cái)?shù)據(jù),同時(shí)為了讓系統(tǒng)不受字符拼接導(dǎo)致的SQL 注入[3],工具會(huì)對用戶傳入的SQL語句進(jìn)行特殊字符的過濾處理來保證系統(tǒng)的安全性[4]。

1 需求分析

該工具需要實(shí)現(xiàn)對云數(shù)據(jù)庫的操作,并打包成可以隨時(shí)調(diào)用的Java歸檔程序。為了能夠讓用戶更加簡單地使用該工具,用戶使用前需要提供微信云數(shù)據(jù)庫的資源ID、賬號(hào)、密鑰,由本工具的云數(shù)據(jù)庫初始化方法代替用戶對云數(shù)據(jù)庫的初始化來獲取數(shù)據(jù)庫的連接實(shí)例。對數(shù)據(jù)的操作一般有四種情況,即增刪改查操作,所以該工具需要提供對云數(shù)據(jù)庫增刪改查的方法,為了防止有其他的操作情況如事務(wù)、回滾等,本工具還需提供一個(gè)可以執(zhí)行任意SQL的方法來滿足用戶需求。同時(shí)為了保證系統(tǒng)的安全性和SQL語句的唯一語義性,需要對傳入的SQL語句進(jìn)行安全性檢測與過濾。為了方便開發(fā)者能夠快速地定位自己的錯(cuò)誤,工具需要提供對SQL語句執(zhí)行情況以及執(zhí)行結(jié)果的日志記錄功能以方便后續(xù)開發(fā)者能夠快速地分析和定位錯(cuò)誤。

綜上所述,該工具主要提供了初始化微信云數(shù)據(jù)庫實(shí)例的方法,執(zhí)行增、刪、改、查和執(zhí)行任意SQL語句的方法和對SQL 語句的安全性校驗(yàn)的方法以及SQL日志記錄的功能。

2 技術(shù)選型

該工具采用Java語言開發(fā),使用正則表達(dá)式對輸入的SQL語句進(jìn)行特殊字符過濾以確保輸入的SQL語句是合法且不具有危險(xiǎn)性的語句來防止SQL注入。工具使用到了Apache Jakarta Common 的子項(xiàng)目Apache HttpClient包作為底層發(fā)起網(wǎng)絡(luò)請求和獲得請求結(jié)果[5]的工具,由用戶輸入SQL語句之后調(diào)用本工具封裝好的網(wǎng)絡(luò)請求方法來獲得SQL語句執(zhí)行結(jié)果。執(zhí)行結(jié)果使用到了JSONObject類對其進(jìn)行JSON的解析與格式化[6],JSON格式化完畢之后即可通過數(shù)組訪問的方法來獲取指定的執(zhí)行結(jié)果。最后使用Java 命令將該工具打包成可直接調(diào)用的Jar包[7],方便其他用戶使用該工具。

3 設(shè)計(jì)與實(shí)現(xiàn)

3.1 工具功能設(shè)計(jì)

根據(jù)需求分析,該工具需實(shí)現(xiàn)基本的增刪改查功能和任意SQL語句執(zhí)行方法來方便開發(fā)者直接調(diào)用。大致確認(rèn)該工具功能分為“添加SQL語句執(zhí)行方法”“刪除SQL語句執(zhí)行方法”“更新SQL語句執(zhí)行方法”“查詢SQL語句執(zhí)行方法”“任意SQL語句執(zhí)行方法”“日志記錄”。確定該工具的功能結(jié)構(gòu)如圖1。

3.2 工具功能實(shí)現(xiàn)

為了達(dá)到通過請求微信云數(shù)據(jù)庫接口來操作數(shù)據(jù),主要需要實(shí)現(xiàn)以下功能:通過發(fā)起Apache HttpCli?ent包封裝的方法中的Post請求來發(fā)送對微信云數(shù)據(jù)庫初始化以及操作的請求。在底層為了提高SQL語句的執(zhí)行效率采用多線程的方式去發(fā)起網(wǎng)絡(luò)請求來執(zhí)行SQL語句。為保障系統(tǒng)數(shù)據(jù)的安全性,需要采取對SQL語句的安全性校驗(yàn)。大致確認(rèn)工具功能需要實(shí)現(xiàn)以下三點(diǎn):“發(fā)起Post請求”“SQL語句安全性校驗(yàn)”“多線程執(zhí)行SQL語句”。

3.2.1 發(fā)起Post 請求

該工具需要發(fā)起對微信云數(shù)據(jù)庫操作接口的網(wǎng)絡(luò)請求和接收返回?cái)?shù)據(jù),此時(shí)需要用到Apache 的HttpCilent包請求微信云數(shù)據(jù)庫的操作接口,關(guān)鍵代碼如下:

當(dāng)工具可以正常發(fā)起POST請求時(shí),首先需要通過POST請求向微信云數(shù)據(jù)庫發(fā)送一個(gè)包含云數(shù)據(jù)庫ID、密鑰、賬號(hào)的驗(yàn)證信息來獲取Token(身份臨時(shí)認(rèn)證信息),擁有Token之后才能對數(shù)據(jù)庫進(jìn)行操作。且該Token有效期只有兩個(gè)小時(shí),那么在執(zhí)行對數(shù)據(jù)庫的操作之前需要對Token進(jìn)行校驗(yàn),如果Token失效那么需要重新獲取Token,有效則直接發(fā)送操作數(shù)據(jù)庫的請求,關(guān)鍵代碼如下:

3.2.2 SQL 語句安全性過濾

數(shù)據(jù)庫是Web服務(wù)中非常重要的部分,許多重要的數(shù)據(jù)都存在于數(shù)據(jù)庫中。在Web漏洞中,SQL注入所占的比例是比較高的,且對服務(wù)的危害等級(jí)也是很高的,如果存在SQL注入漏洞可能會(huì)導(dǎo)致數(shù)據(jù)庫的信息泄露和影響應(yīng)用的正常使用。所以在使用SQL語句對數(shù)據(jù)庫進(jìn)行查詢的時(shí)候需要確保所查詢的SQL語句是無危害的,不會(huì)導(dǎo)致除原本SQL語義的其他語句被執(zhí)行。本工具中的SQL語句采用微信云數(shù)據(jù)庫的語法結(jié)構(gòu),如果未對SQL語句進(jìn)行安全校驗(yàn),那么原本的語義可能就會(huì)被攻擊者利用注入漏洞轉(zhuǎn)換為其他語義。

如原本語句為:"db. collection('admin'). where({username:'"+name+"'}).get()",傳入name參數(shù)即可查詢username為name的用戶。如果不對輸入的name參數(shù)安全校驗(yàn),那么輸入的name 如果為“小明",age:10"”,那么原語句的SQL語句就會(huì)變?yōu)椋?db.collection('admin').where({username: "小明",age: "10"}).get()",該語句的語義就會(huì)由查詢用戶名為小明的用戶信息變?yōu)椴樵冇脩裘麨樾∶髑夷挲g為10歲的用戶信息,原有的SQL語句的語義發(fā)生的轉(zhuǎn)變,這就是字符拼接導(dǎo)致的SQL注入。本工具采用字符過濾的方式可以有效地避免這種漏洞,關(guān)鍵代碼如下:

下面使用JUnit測試模塊測試該方法對輸入包含非法字符的SQL語句過濾效果,代碼如下:

3.2.3 多線程執(zhí)行SQL 語句

本工具對云數(shù)據(jù)庫進(jìn)行操作的原理是通過請求微信云數(shù)據(jù)庫對應(yīng)的API 來實(shí)現(xiàn)的增刪改查操作。但網(wǎng)絡(luò)操作通常比較費(fèi)時(shí),所以為提高執(zhí)行效率,本工具在底層采用線程池的方式來發(fā)起網(wǎng)絡(luò)請求,從而實(shí)現(xiàn)在需要調(diào)用多線程直接進(jìn)行調(diào)用,省去了創(chuàng)建多線程耗時(shí)的過程。關(guān)鍵代碼如下:

同時(shí),執(zhí)行的SQL語句所返回的執(zhí)行結(jié)果在返回給用戶的同時(shí)也會(huì)輸出到控制臺(tái)方便開發(fā)者能夠快速地分析和定位錯(cuò)誤,如圖4。

4 結(jié)束語

該工具使用Java開發(fā),提供了基本的微信云數(shù)據(jù)庫的SQL語句執(zhí)行功能、云數(shù)據(jù)庫初始化功能。讓開發(fā)者在對微信云數(shù)據(jù)庫的第三方開發(fā)中能夠更加簡單便捷。使用了線程池來提高SQL語句的執(zhí)行效率,在SQL執(zhí)行過程中對SQL語句進(jìn)行了安全校驗(yàn)確保SQL語句的語義一致以及云數(shù)據(jù)庫的安全。同時(shí)為了方便開發(fā)者能夠快速定位SQL語句,本工具會(huì)將每次執(zhí)行的SQL語句以及返回結(jié)果進(jìn)行輸出記錄。

主站蜘蛛池模板: 欧美精品不卡| 中文字幕乱码二三区免费| 久久网欧美| 国产黄网站在线观看| 网友自拍视频精品区| 欧美高清国产| 高清色本在线www| 四虎永久在线视频| 69av免费视频| 性视频久久| 999国内精品久久免费视频| 婷五月综合| 九月婷婷亚洲综合在线| 99这里只有精品在线| 久久亚洲高清国产| AⅤ色综合久久天堂AV色综合| 国产成人综合亚洲欧美在| 成人国内精品久久久久影院| 天天做天天爱夜夜爽毛片毛片| 亚洲第一av网站| 亚洲日韩精品无码专区97| 美女黄网十八禁免费看| 亚洲性视频网站| 99热国产在线精品99| 香蕉精品在线| 国产一级做美女做受视频| 国产亚洲欧美日本一二三本道| 亚洲三级电影在线播放| 亚瑟天堂久久一区二区影院| 女人18毛片水真多国产| 97se综合| 欧美午夜理伦三级在线观看| 九九热精品视频在线| 色成人综合| 99热免费在线| 99手机在线视频| 91蝌蚪视频在线观看| 91外围女在线观看| 欧美国产日韩在线| 午夜一区二区三区| 99免费在线观看视频| 动漫精品啪啪一区二区三区| 91精品情国产情侣高潮对白蜜| 国产午夜不卡| 国产一级毛片高清完整视频版| 四虎影视库国产精品一区| 精品欧美视频| 狠狠综合久久久久综| 高潮毛片无遮挡高清视频播放| 国产精品第三页在线看| 国产三级a| 国产小视频免费观看| 在线播放真实国产乱子伦| 国产成人久久综合777777麻豆 | 欧美精品在线观看视频| 天天躁日日躁狠狠躁中文字幕| 欧美精品综合视频一区二区| 成人免费午间影院在线观看| 国产高清无码麻豆精品| 国产精品成人久久| 国产老女人精品免费视频| 毛片网站免费在线观看| 无码中文字幕精品推荐| 国产亚洲精品97在线观看| 亚洲欧美一区在线| 一本大道东京热无码av| 国产成人福利在线视老湿机| 色成人亚洲| 茄子视频毛片免费观看| 71pao成人国产永久免费视频| 国产亚卅精品无码| 自偷自拍三级全三级视频| 午夜小视频在线| 国产精品第页| 国产一区二区三区在线观看视频 | 亚洲自偷自拍另类小说| 毛片视频网址| 国产综合精品日本亚洲777| 亚洲男人在线| 特级aaaaaaaaa毛片免费视频| 国产黄网站在线观看| 青青草原国产av福利网站|