莊卓佩,張謙,黎益,黃晉健
(廣東第二師范學(xué)院,廣東 廣州)
隨著校園社團(tuán)文化興起,高校各大社團(tuán)發(fā)展規(guī)模越來(lái)越壯大,各高校參與社團(tuán)活動(dòng)人數(shù)逐年上升,社團(tuán)數(shù)量也迅速增長(zhǎng)起來(lái)。能否在眾多社團(tuán)爭(zhēng)艷中脫穎而出,形成強(qiáng)有力競(jìng)爭(zhēng),取決于社團(tuán)組織有無(wú)高效團(tuán)隊(duì)協(xié)作能力。此外,社會(huì)上存在一批愛(ài)好協(xié)會(huì)、民間組織等團(tuán)隊(duì)也需要此類(lèi)系統(tǒng)對(duì)團(tuán)隊(duì)進(jìn)行信息化管理。
近年來(lái),市面上的一線科技研發(fā)公司設(shè)計(jì)出許多與協(xié)作管理相關(guān)的產(chǎn)品,例如企業(yè)微信、釘釘talk、瀑布IM、石墨文檔等產(chǎn)品,但是此類(lèi)產(chǎn)品大多面向企業(yè)管理或者是專(zhuān)注文檔協(xié)同工作,無(wú)法很好的滿(mǎn)足像高校社團(tuán)的團(tuán)隊(duì)的協(xié)作與管理的需求。此類(lèi)產(chǎn)品主要面向企業(yè)用戶(hù),因此產(chǎn)品收費(fèi)較為昂貴,而小型團(tuán)隊(duì)無(wú)法承擔(dān)高額的企業(yè)級(jí)系統(tǒng)服務(wù)費(fèi)用。即使存在免費(fèi)試用版本,但也因功能限制過(guò)多,導(dǎo)致用戶(hù)使用體驗(yàn)十分差。
對(duì)于高校社團(tuán)而言,通常存在資金短缺或者購(gòu)買(mǎi)力低等情況,應(yīng)該選取適合團(tuán)隊(duì)本身、性?xún)r(jià)比最高的團(tuán)隊(duì)協(xié)助管理系統(tǒng)。本文設(shè)計(jì)的團(tuán)隊(duì)協(xié)作管理系統(tǒng),面向以高校社團(tuán)組織為案例的團(tuán)隊(duì)使用,結(jié)合當(dāng)前高校協(xié)會(huì)需求進(jìn)行需求分析設(shè)計(jì),保證團(tuán)隊(duì)的原有管理模式不改變?yōu)榍疤幔瑤椭咝I鐖F(tuán)的團(tuán)隊(duì)實(shí)現(xiàn)管理的信息化、統(tǒng)一化,提升團(tuán)隊(duì)內(nèi)運(yùn)營(yíng)與管理能力,開(kāi)發(fā)相關(guān)信息化管理功能為高校社團(tuán)的團(tuán)隊(duì)提供便捷管理,降低團(tuán)隊(duì)運(yùn)營(yíng)難度,減少團(tuán)隊(duì)內(nèi)信息傳遞的失真。
系統(tǒng)依據(jù)社團(tuán)組織的需求明確了系統(tǒng)用戶(hù)包括團(tuán)隊(duì)管理員、部門(mén)負(fù)責(zé)人、團(tuán)隊(duì)成員,系統(tǒng)功能包括組織管理、資產(chǎn)管理、文檔管理、活動(dòng)管理等。
1.組織管理
組織管理主要包含對(duì)團(tuán)隊(duì)部門(mén)與團(tuán)隊(duì)成員進(jìn)行信息化管理,簡(jiǎn)化團(tuán)隊(duì)對(duì)內(nèi)部人員與部門(mén)管理工作。組織管理包括成員信息管理與部門(mén)信息管理模塊。成員信息包含賬號(hào)用戶(hù)名、團(tuán)隊(duì)成員姓名、所在部門(mén)、團(tuán)隊(duì)職位、郵箱地址、聯(lián)系電話等信息。部門(mén)信息包含部門(mén)名稱(chēng)、部門(mén)負(fù)責(zé)人、負(fù)責(zé)人郵箱、負(fù)責(zé)人電話等。團(tuán)隊(duì)管理員擁有成員管理與部門(mén)管理的所有控制權(quán),部門(mén)負(fù)責(zé)人僅擁有對(duì)部門(mén)管理中的部門(mén)信息維護(hù)與部門(mén)人員調(diào)用的權(quán)限。
團(tuán)隊(duì)管理員創(chuàng)建成員賬號(hào)時(shí),錄入成員的用戶(hù)名、姓名以及聯(lián)系電話。成員獲取賬號(hào)進(jìn)入系統(tǒng)查看并完善個(gè)人信息。
團(tuán)隊(duì)管理員創(chuàng)建部門(mén)時(shí),錄入部門(mén)名稱(chēng)以及部門(mén)負(fù)責(zé)人姓名。部門(mén)負(fù)責(zé)人查看并完善部門(mén)詳細(xì)信息后,為所在部門(mén)添加或剔除成員。
2.資產(chǎn)管理
資產(chǎn)管理主要負(fù)責(zé)登記團(tuán)隊(duì)內(nèi)的所有資產(chǎn)信息。團(tuán)隊(duì)資產(chǎn)包括物理資產(chǎn)與虛擬資產(chǎn)以及潛在資產(chǎn)。團(tuán)隊(duì)成員均可以添加資產(chǎn)。資產(chǎn)信息包括資產(chǎn)描述、資產(chǎn)類(lèi)型、所屬部門(mén)、登記時(shí)間、資產(chǎn)狀態(tài)、登記人以及資產(chǎn)圖片。
資產(chǎn)被登記后,僅有資產(chǎn)登記人、資產(chǎn)歸屬部門(mén)的部門(mén)負(fù)責(zé)人以及團(tuán)隊(duì)管理員進(jìn)行信息維護(hù)。
3.文檔管理
文檔管理負(fù)責(zé)登記各類(lèi)文檔資料。文檔信息包括文檔標(biāo)題、公開(kāi)范圍、所屬部門(mén)、文檔作者、更新時(shí)間與附件。文檔公開(kāi)范圍分為內(nèi)部公開(kāi)與外部公開(kāi),文檔歸屬部門(mén)既可以指定單一部門(mén)也可以設(shè)置為全部門(mén)所有。
系統(tǒng)提供團(tuán)隊(duì)文檔管理功能,用于管理團(tuán)隊(duì)各類(lèi)文檔資料。此功能模塊包含登記文檔、查詢(xún)文檔、編輯文檔、刪除文檔、文件上傳下載等的系統(tǒng)邏輯功能。
文檔信息被團(tuán)隊(duì)成員登記后,團(tuán)隊(duì)內(nèi)所有成員均可查閱文檔信息,僅有文檔歸屬部門(mén)成員以及團(tuán)隊(duì)管理員進(jìn)行信息維護(hù)。
4.活動(dòng)管理
活動(dòng)管理負(fù)責(zé)記錄團(tuán)隊(duì)開(kāi)展的各項(xiàng)活動(dòng),活動(dòng)信息包括活動(dòng)主題、登記人、發(fā)起部門(mén)、開(kāi)始時(shí)間、結(jié)束時(shí)間以及預(yù)測(cè)參與人數(shù)。活動(dòng)管理功能包括創(chuàng)建活動(dòng)、刪除活動(dòng)、活動(dòng)信息查看、活動(dòng)信息維護(hù)與開(kāi)啟活動(dòng)。
系統(tǒng)提供團(tuán)隊(duì)活動(dòng)管理功能,用于管理團(tuán)隊(duì)開(kāi)展各項(xiàng)活動(dòng),包括日常活動(dòng)、特殊活動(dòng)、等活動(dòng)信息。此功能模塊包含文件上傳、信息登記、消息通知、人員簽到、簽到定位等的系統(tǒng)邏輯功能。
活動(dòng)被創(chuàng)建后,團(tuán)隊(duì)內(nèi)所有成員均可查閱活動(dòng)信息,僅有活動(dòng)發(fā)起部門(mén)成員以及團(tuán)隊(duì)管理員進(jìn)行信息維護(hù)與開(kāi)啟活動(dòng)。
1.安全性需求
團(tuán)隊(duì)協(xié)作管理系統(tǒng)擬部署在互聯(lián)網(wǎng)環(huán)境,任何人都可以對(duì)站點(diǎn)進(jìn)行訪問(wèn)甚至攻擊,因此系統(tǒng)需要更高的安全措施來(lái)保證系統(tǒng)的可用性、機(jī)密性、完整性。
系統(tǒng)需要具有用戶(hù)身份驗(yàn)證、控制訪問(wèn)、參數(shù)輸入防注入等措施來(lái)阻止攻擊者對(duì)系統(tǒng)的惡意攻擊。在用戶(hù)管理方面,各類(lèi)表單需要添加csrf_token參數(shù)預(yù)防CSRF(跨站請(qǐng)求偽造)攻擊,有效組織用戶(hù)之前偽造請(qǐng)求。通過(guò)對(duì)接收參數(shù)進(jìn)行危險(xiǎn)字符或函數(shù)過(guò)濾,有效防止SQL注入、XSS注入等嚴(yán)重威脅系統(tǒng)安全攻擊。
2.性能需求
系統(tǒng)盡可能滿(mǎn)足行業(yè)制定的性能“2-5-8原則”,以用戶(hù)訪問(wèn)頁(yè)面為準(zhǔn)的系統(tǒng)響應(yīng)時(shí)間為2秒內(nèi),用戶(hù)感覺(jué)系統(tǒng)響應(yīng)速度極快,響應(yīng)時(shí)間在2~5秒之間,用戶(hù)對(duì)系統(tǒng)響應(yīng)速度還能接受,響應(yīng)時(shí)間在5~8秒之間,用戶(hù)將覺(jué)得系統(tǒng)響應(yīng)速度慢,當(dāng)用戶(hù)請(qǐng)求系統(tǒng)服務(wù)響應(yīng)時(shí)間超過(guò)8秒將覺(jué)得系統(tǒng)失去響應(yīng),會(huì)選擇離開(kāi)Web站點(diǎn)或者在此訪問(wèn),發(fā)起第二次請(qǐng)求[1];因此制定本系統(tǒng)各項(xiàng)性能指標(biāo)。系統(tǒng)各項(xiàng)性能指標(biāo)如表1所示。

表1 系統(tǒng)各項(xiàng)性能指標(biāo)
團(tuán)隊(duì)協(xié)作管理系統(tǒng)采用B/S架構(gòu),采用單頁(yè)Web應(yīng)用的實(shí)現(xiàn)方式,核心思路是瀏覽器用戶(hù)加載一個(gè)單獨(dú)的HTML頁(yè)面之后,剩余的使用操作均無(wú)需離開(kāi)此頁(yè)面,因而用戶(hù)不需要頻繁地刷新和切換頁(yè)面,頁(yè)面實(shí)際上是按需部分更新的[2]。
以用戶(hù)依賴(lài)瀏覽器為前提,系統(tǒng)提供各種瀏覽器交互的請(qǐng)求,從而完成整體系統(tǒng)的架構(gòu)實(shí)現(xiàn)。系統(tǒng)框架如圖1所示。

圖1 團(tuán)隊(duì)協(xié)作管理系統(tǒng)框架
Python中擁有“pip”便捷式模塊安裝命令,開(kāi)發(fā)者可使用相應(yīng)命令從PyPI源中安裝擴(kuò)展模塊,“pip install flask”可實(shí)現(xiàn)安裝Flask與相關(guān)Flask框架依賴(lài)的自動(dòng)安裝。為了避免與系統(tǒng)環(huán)境中的Python環(huán)境配置產(chǎn)生影響,導(dǎo)致系統(tǒng)引入過(guò)多不必要的擴(kuò)展,“virtualenv”擴(kuò)展提供一種虛擬環(huán)境來(lái)隔離系統(tǒng)中的Python環(huán)境。開(kāi)發(fā)者在命令終端中執(zhí)行“pip install virtualenv”安裝“virtualenv”擴(kuò)展,安裝完成后執(zhí)行命令“virtualenv design”即創(chuàng)建一個(gè)名為design的虛擬環(huán)境,使用“designscriptsactivate”(Windows系統(tǒng))或者“source bin/activate”(Unix與Linux系統(tǒng))進(jìn)入design虛擬環(huán)境。此后在虛擬環(huán)境中使用pip安裝python擴(kuò)展不再會(huì)影響系統(tǒng)環(huán)境變量中的Python環(huán)境[3]。
在Flask框架中,每一個(gè)路由則代表著一個(gè)函數(shù),項(xiàng)目中存在大量的路由會(huì)顯得十分混亂,為了提高對(duì)各功能模塊與視圖路由的控制,因此引入藍(lán)圖管理視圖與路由關(guān)系。系統(tǒng)中設(shè)定藍(lán)圖前綴為“/home”,假設(shè)服務(wù)器地址“example.com”,那么用戶(hù)訪問(wèn)“http://example.com/home/index”則路由為“/index”。各模塊視圖接收著不同的HTTP請(qǐng)求,對(duì)應(yīng)的路由指向路由函數(shù)處理,因此形成了一個(gè)Web應(yīng)用[3]。
1.身份驗(yàn)證
系統(tǒng)引入Flask框架中的flask_login.LoginManager模塊管理賬號(hào)、存儲(chǔ)賬號(hào)信息。其中該模塊下的一個(gè)子模塊login_required提供身份驗(yàn)證功能,只需要在視圖函數(shù)入口處添加“@login_manager”即可實(shí)現(xiàn)對(duì)該視圖路由進(jìn)行身份驗(yàn)證。
用戶(hù)在登錄成功后,引入子模塊“user_loader”能自動(dòng)添加用戶(hù)會(huì)話session以及維護(hù)用戶(hù)會(huì)話。引入子模塊“current_user”自動(dòng)維持用戶(hù)身份信息。用戶(hù)退出時(shí),使用子模塊“l(fā)ogout_user”釋放用戶(hù)會(huì)話。
在Flask程序初始化時(shí),對(duì)“PERMANENT_SESSION_LIFETIME”系統(tǒng)參數(shù)設(shè)定用戶(hù)會(huì)話session時(shí)效,當(dāng)用戶(hù)成功登錄后,會(huì)添加用戶(hù)會(huì)話session,后臺(tái)服務(wù)器也開(kāi)始計(jì)時(shí),當(dāng)用戶(hù)有持續(xù)的通信操作時(shí)會(huì)話的有效性會(huì)不斷被刷新而持續(xù)保持可用性;而當(dāng)用戶(hù)一段時(shí)間不用之后,后臺(tái)服務(wù)程序就會(huì)將session會(huì)話從系統(tǒng)緩存中刪除,這樣當(dāng)用戶(hù)嘗試再次訪問(wèn)時(shí)就會(huì)發(fā)現(xiàn)系統(tǒng)拒絕訪問(wèn)并且頁(yè)面也會(huì)跳轉(zhuǎn)到登錄界面要求重新登錄[4]。從而實(shí)現(xiàn)系統(tǒng)身份驗(yàn)證功能。
2.防惡意代碼注入
為了規(guī)范化數(shù)據(jù)庫(kù)連接管理,同時(shí)注重防止用戶(hù)惡意測(cè)試導(dǎo)致SQL注入,系統(tǒng)引入SQLAlchemy模 塊。SQLAlchemy是 提 供SQL工具包和對(duì)象關(guān)系映射(ORM)的一種工具。SQLAlchemy實(shí)現(xiàn)了對(duì)象關(guān)系映射的服務(wù),提供了數(shù)據(jù)映射模式,能夠方便地把類(lèi)映射到數(shù)據(jù) 庫(kù)。Flask-SQLAlchemy給Flask框 架 提 供了SQLAlchemy的支持,這樣Flask框架中利用SQLAlchemy操作數(shù)據(jù)庫(kù)就變得比較簡(jiǎn)單[5]。當(dāng)系統(tǒng)使用該SQLAlchemy時(shí),只需要針對(duì)不同數(shù)據(jù)表設(shè)計(jì)封裝類(lèi),實(shí)現(xiàn)參數(shù)與表字段數(shù)據(jù)綁定,執(zhí)行SQL查詢(xún)時(shí)能夠防止SQL注入。
針對(duì)XSS攻擊注入,F(xiàn)lask框架采用Jinja2引擎,Jinja2是BSD許可證授權(quán)的模板引擎,包含許多功能和特性,包括替換、繼承、控制流等;它的特點(diǎn)是靈活、快速、安全。Jinja2速度快的原因有部分是因?yàn)樗囊?guī)范,即Jinja2不允許放置任意的Python代碼,也不能放置Python表達(dá)式,只包含控制結(jié)構(gòu),沒(méi)有業(yè)務(wù)邏輯在其中,避免了耦合[6]。當(dāng)系統(tǒng)后端服務(wù)往前端返回?cái)?shù)據(jù)時(shí),會(huì)自動(dòng)轉(zhuǎn)義所有值,達(dá)到防XSS注入效果。
3.防跨站請(qǐng)求偽造
在Flask框架中,存在一個(gè)模塊flask_wtf.CSRFProtect用于保護(hù)表單防止跨站請(qǐng)求偽造(CSRF)。如圖2所示。

圖2 CSRF攻擊例子
在系統(tǒng)入口初始化時(shí),引入flask_wtf.CSRFProtect并聲明一個(gè)安全密鑰(SECRET_KEY)參與csrf_token加密,在前端表單中添加一個(gè)隱形標(biāo)簽“<input type="hidden" value="{{ csrf_token() }}" name="csrf_token" /> ”或者添加一個(gè)表單防跨站請(qǐng)求偽造聲明“{{ form.csrf_token }}”對(duì)表單進(jìn)行保護(hù),從而避免CSRF攻擊。
為了提高系統(tǒng)的性能,對(duì)token、cookie等占用緩存的參數(shù)縮短其刷新時(shí)間,防止用戶(hù)惡意請(qǐng)求多個(gè)token、cookie占用系統(tǒng)緩存。
Flask框 架 建 立 在Werkzeug WSGI(Web Server Gateway Interface)類(lèi)庫(kù)之上,該類(lèi)使用的是WSGI協(xié)議負(fù)責(zé)數(shù)據(jù)傳輸與請(qǐng)求封裝。系統(tǒng)改用uWSGI協(xié)議(網(wǎng)站分布式集群網(wǎng)絡(luò)應(yīng)用的解決方案)能提升系統(tǒng)響應(yīng)性能、降低內(nèi)存占用以及詳細(xì)監(jiān)控服務(wù)運(yùn)行狀態(tài)(如服務(wù)性能與瓶頸)。uWSGI如 傳 統(tǒng)web服 務(wù)(Nginx、IIS、Apache)一樣負(fù)責(zé)封裝HTTP原始請(qǐng)求與TCP連接信息,實(shí)現(xiàn)了WSGI協(xié)議、uWSGI協(xié)議與HTTP等協(xié)議工作。
操作系統(tǒng)為macOS 10.15.14、CPU為Intel Core i7 2.8GHz、內(nèi)存為8GB、運(yùn)行環(huán)境為Python 3.7.4、Web服務(wù)器使用Flask 1.1.1以及Werkzeug WSGI 1.0.0協(xié)議、數(shù)據(jù)庫(kù)使用SQLite 2.6.0;客戶(hù)端測(cè)試環(huán)境:操作系統(tǒng)為Windows10 17763版本、CPU為Intel Core i7 2.8GHz、內(nèi)存為4GB、瀏覽器為Chrome 81.0。
組織管理模塊測(cè)試分成兩個(gè)子模塊,分別是人員管理模塊測(cè)試與部門(mén)管理模塊測(cè)試。在兩個(gè)子模塊中,測(cè)試系統(tǒng)能否按照預(yù)期結(jié)果提供組織管理成員與部門(mén)的新增、編輯、刪除、查詢(xún)等功能,并且能對(duì)惡意數(shù)據(jù)與非法提交做攔截。
資產(chǎn)管理模塊測(cè)試系統(tǒng)能否按照預(yù)期結(jié)果提供資產(chǎn)管理的新增、查詢(xún)、編輯、刪除等功能,并且能對(duì)惡意數(shù)據(jù)與非法提交做攔截。
文檔管理模塊測(cè)試系統(tǒng)能否按照預(yù)期結(jié)果提供文檔管理的新增、查詢(xún)、編輯、刪除等功能,并且能對(duì)惡意數(shù)據(jù)與非法提交做攔截。
活動(dòng)管理模塊測(cè)試系統(tǒng)能否按照預(yù)期結(jié)果提供活動(dòng)管理的新增、查詢(xún)、編輯、刪除等功能,并且能對(duì)惡意數(shù)據(jù)與非法提交做攔截。
系統(tǒng)各模塊功能測(cè)試均通過(guò),均正常提供管理服務(wù)。
3.安全性測(cè)試
系統(tǒng)存儲(chǔ)信息均為團(tuán)隊(duì)內(nèi)敏感信息,此類(lèi)信息均擁有一定的經(jīng)濟(jì)價(jià)值,為了保證系統(tǒng)信息的安全,對(duì)于系統(tǒng)進(jìn)行安全性測(cè)試。常見(jiàn)的web安全威脅有SQL注入、XSS注入以及跨站請(qǐng)求偽造(CSRF)。
系統(tǒng)安全性各類(lèi)攻擊測(cè)試均通過(guò),均達(dá)到預(yù)期結(jié)果。系統(tǒng)擁有防SQL注入、XSS注入以跨站偽造請(qǐng)求措施,保證了系統(tǒng)運(yùn)行安全性。
4.性能測(cè)試
系統(tǒng)性能經(jīng)測(cè)試均通過(guò),均達(dá)到預(yù)期結(jié)果。系統(tǒng)擁有能應(yīng)對(duì)短時(shí)間高并發(fā)請(qǐng)求,保證了系統(tǒng)運(yùn)行的穩(wěn)定性。
本次測(cè)試結(jié)果符合預(yù)期結(jié)果,各項(xiàng)性能全部達(dá)標(biāo)。
本文以高校組織為使用對(duì)象,設(shè)計(jì)一種團(tuán)隊(duì)協(xié)作管理系統(tǒng),實(shí)現(xiàn)對(duì)團(tuán)隊(duì)成員、部門(mén)、資產(chǎn)、文檔以及活動(dòng)等數(shù)據(jù)進(jìn)行信息化管理的目的,同時(shí)系統(tǒng)制定了嚴(yán)格的訪問(wèn)控制權(quán)限,團(tuán)隊(duì)成員可協(xié)同合作,共同管理,從而有效提升團(tuán)隊(duì)運(yùn)營(yíng)管理效率,為推動(dòng)團(tuán)隊(duì)信息化建設(shè)與發(fā)展提供了借鑒。