莊卓佩,張謙,黎益,黃晉健
(廣東第二師范學院,廣東 廣州)
隨著校園社團文化興起,高校各大社團發(fā)展規(guī)模越來越壯大,各高校參與社團活動人數(shù)逐年上升,社團數(shù)量也迅速增長起來。能否在眾多社團爭艷中脫穎而出,形成強有力競爭,取決于社團組織有無高效團隊協(xié)作能力。此外,社會上存在一批愛好協(xié)會、民間組織等團隊也需要此類系統(tǒng)對團隊進行信息化管理。
近年來,市面上的一線科技研發(fā)公司設計出許多與協(xié)作管理相關(guān)的產(chǎn)品,例如企業(yè)微信、釘釘talk、瀑布IM、石墨文檔等產(chǎn)品,但是此類產(chǎn)品大多面向企業(yè)管理或者是專注文檔協(xié)同工作,無法很好的滿足像高校社團的團隊的協(xié)作與管理的需求。此類產(chǎn)品主要面向企業(yè)用戶,因此產(chǎn)品收費較為昂貴,而小型團隊無法承擔高額的企業(yè)級系統(tǒng)服務費用。即使存在免費試用版本,但也因功能限制過多,導致用戶使用體驗十分差。
對于高校社團而言,通常存在資金短缺或者購買力低等情況,應該選取適合團隊本身、性價比最高的團隊協(xié)助管理系統(tǒng)。本文設計的團隊協(xié)作管理系統(tǒng),面向以高校社團組織為案例的團隊使用,結(jié)合當前高校協(xié)會需求進行需求分析設計,保證團隊的原有管理模式不改變?yōu)榍疤?,幫助高校社團的團隊實現(xiàn)管理的信息化、統(tǒng)一化,提升團隊內(nèi)運營與管理能力,開發(fā)相關(guān)信息化管理功能為高校社團的團隊提供便捷管理,降低團隊運營難度,減少團隊內(nèi)信息傳遞的失真。
系統(tǒng)依據(jù)社團組織的需求明確了系統(tǒng)用戶包括團隊管理員、部門負責人、團隊成員,系統(tǒng)功能包括組織管理、資產(chǎn)管理、文檔管理、活動管理等。
1.組織管理
組織管理主要包含對團隊部門與團隊成員進行信息化管理,簡化團隊對內(nèi)部人員與部門管理工作。組織管理包括成員信息管理與部門信息管理模塊。成員信息包含賬號用戶名、團隊成員姓名、所在部門、團隊職位、郵箱地址、聯(lián)系電話等信息。部門信息包含部門名稱、部門負責人、負責人郵箱、負責人電話等。團隊管理員擁有成員管理與部門管理的所有控制權(quán),部門負責人僅擁有對部門管理中的部門信息維護與部門人員調(diào)用的權(quán)限。
團隊管理員創(chuàng)建成員賬號時,錄入成員的用戶名、姓名以及聯(lián)系電話。成員獲取賬號進入系統(tǒng)查看并完善個人信息。
團隊管理員創(chuàng)建部門時,錄入部門名稱以及部門負責人姓名。部門負責人查看并完善部門詳細信息后,為所在部門添加或剔除成員。
2.資產(chǎn)管理
資產(chǎn)管理主要負責登記團隊內(nèi)的所有資產(chǎn)信息。團隊資產(chǎn)包括物理資產(chǎn)與虛擬資產(chǎn)以及潛在資產(chǎn)。團隊成員均可以添加資產(chǎn)。資產(chǎn)信息包括資產(chǎn)描述、資產(chǎn)類型、所屬部門、登記時間、資產(chǎn)狀態(tài)、登記人以及資產(chǎn)圖片。
資產(chǎn)被登記后,僅有資產(chǎn)登記人、資產(chǎn)歸屬部門的部門負責人以及團隊管理員進行信息維護。
3.文檔管理
文檔管理負責登記各類文檔資料。文檔信息包括文檔標題、公開范圍、所屬部門、文檔作者、更新時間與附件。文檔公開范圍分為內(nèi)部公開與外部公開,文檔歸屬部門既可以指定單一部門也可以設置為全部門所有。
系統(tǒng)提供團隊文檔管理功能,用于管理團隊各類文檔資料。此功能模塊包含登記文檔、查詢文檔、編輯文檔、刪除文檔、文件上傳下載等的系統(tǒng)邏輯功能。
文檔信息被團隊成員登記后,團隊內(nèi)所有成員均可查閱文檔信息,僅有文檔歸屬部門成員以及團隊管理員進行信息維護。
4.活動管理
活動管理負責記錄團隊開展的各項活動,活動信息包括活動主題、登記人、發(fā)起部門、開始時間、結(jié)束時間以及預測參與人數(shù)?;顒庸芾砉δ馨▌?chuàng)建活動、刪除活動、活動信息查看、活動信息維護與開啟活動。
系統(tǒng)提供團隊活動管理功能,用于管理團隊開展各項活動,包括日?;顒?、特殊活動、等活動信息。此功能模塊包含文件上傳、信息登記、消息通知、人員簽到、簽到定位等的系統(tǒng)邏輯功能。
活動被創(chuàng)建后,團隊內(nèi)所有成員均可查閱活動信息,僅有活動發(fā)起部門成員以及團隊管理員進行信息維護與開啟活動。
1.安全性需求
團隊協(xié)作管理系統(tǒng)擬部署在互聯(lián)網(wǎng)環(huán)境,任何人都可以對站點進行訪問甚至攻擊,因此系統(tǒng)需要更高的安全措施來保證系統(tǒng)的可用性、機密性、完整性。
系統(tǒng)需要具有用戶身份驗證、控制訪問、參數(shù)輸入防注入等措施來阻止攻擊者對系統(tǒng)的惡意攻擊。在用戶管理方面,各類表單需要添加csrf_token參數(shù)預防CSRF(跨站請求偽造)攻擊,有效組織用戶之前偽造請求。通過對接收參數(shù)進行危險字符或函數(shù)過濾,有效防止SQL注入、XSS注入等嚴重威脅系統(tǒng)安全攻擊。
2.性能需求
系統(tǒng)盡可能滿足行業(yè)制定的性能“2-5-8原則”,以用戶訪問頁面為準的系統(tǒng)響應時間為2秒內(nèi),用戶感覺系統(tǒng)響應速度極快,響應時間在2~5秒之間,用戶對系統(tǒng)響應速度還能接受,響應時間在5~8秒之間,用戶將覺得系統(tǒng)響應速度慢,當用戶請求系統(tǒng)服務響應時間超過8秒將覺得系統(tǒng)失去響應,會選擇離開Web站點或者在此訪問,發(fā)起第二次請求[1];因此制定本系統(tǒng)各項性能指標。系統(tǒng)各項性能指標如表1所示。
表1 系統(tǒng)各項性能指標
團隊協(xié)作管理系統(tǒng)采用B/S架構(gòu),采用單頁Web應用的實現(xiàn)方式,核心思路是瀏覽器用戶加載一個單獨的HTML頁面之后,剩余的使用操作均無需離開此頁面,因而用戶不需要頻繁地刷新和切換頁面,頁面實際上是按需部分更新的[2]。
以用戶依賴瀏覽器為前提,系統(tǒng)提供各種瀏覽器交互的請求,從而完成整體系統(tǒng)的架構(gòu)實現(xiàn)。系統(tǒng)框架如圖1所示。
圖1 團隊協(xié)作管理系統(tǒng)框架
Python中擁有“pip”便捷式模塊安裝命令,開發(fā)者可使用相應命令從PyPI源中安裝擴展模塊,“pip install flask”可實現(xiàn)安裝Flask與相關(guān)Flask框架依賴的自動安裝。為了避免與系統(tǒng)環(huán)境中的Python環(huán)境配置產(chǎn)生影響,導致系統(tǒng)引入過多不必要的擴展,“virtualenv”擴展提供一種虛擬環(huán)境來隔離系統(tǒng)中的Python環(huán)境。開發(fā)者在命令終端中執(zhí)行“pip install virtualenv”安裝“virtualenv”擴展,安裝完成后執(zhí)行命令“virtualenv design”即創(chuàng)建一個名為design的虛擬環(huán)境,使用“designscriptsactivate”(Windows系統(tǒng))或者“source bin/activate”(Unix與Linux系統(tǒng))進入design虛擬環(huán)境。此后在虛擬環(huán)境中使用pip安裝python擴展不再會影響系統(tǒng)環(huán)境變量中的Python環(huán)境[3]。
在Flask框架中,每一個路由則代表著一個函數(shù),項目中存在大量的路由會顯得十分混亂,為了提高對各功能模塊與視圖路由的控制,因此引入藍圖管理視圖與路由關(guān)系。系統(tǒng)中設定藍圖前綴為“/home”,假設服務器地址“example.com”,那么用戶訪問“http://example.com/home/index”則路由為“/index”。各模塊視圖接收著不同的HTTP請求,對應的路由指向路由函數(shù)處理,因此形成了一個Web應用[3]。
1.身份驗證
系統(tǒng)引入Flask框架中的flask_login.LoginManager模塊管理賬號、存儲賬號信息。其中該模塊下的一個子模塊login_required提供身份驗證功能,只需要在視圖函數(shù)入口處添加“@login_manager”即可實現(xiàn)對該視圖路由進行身份驗證。
用戶在登錄成功后,引入子模塊“user_loader”能自動添加用戶會話session以及維護用戶會話。引入子模塊“current_user”自動維持用戶身份信息。用戶退出時,使用子模塊“l(fā)ogout_user”釋放用戶會話。
在Flask程序初始化時,對“PERMANENT_SESSION_LIFETIME”系統(tǒng)參數(shù)設定用戶會話session時效,當用戶成功登錄后,會添加用戶會話session,后臺服務器也開始計時,當用戶有持續(xù)的通信操作時會話的有效性會不斷被刷新而持續(xù)保持可用性;而當用戶一段時間不用之后,后臺服務程序就會將session會話從系統(tǒng)緩存中刪除,這樣當用戶嘗試再次訪問時就會發(fā)現(xiàn)系統(tǒng)拒絕訪問并且頁面也會跳轉(zhuǎn)到登錄界面要求重新登錄[4]。從而實現(xiàn)系統(tǒng)身份驗證功能。
2.防惡意代碼注入
為了規(guī)范化數(shù)據(jù)庫連接管理,同時注重防止用戶惡意測試導致SQL注入,系統(tǒng)引入SQLAlchemy模 塊。SQLAlchemy是 提 供SQL工具包和對象關(guān)系映射(ORM)的一種工具。SQLAlchemy實現(xiàn)了對象關(guān)系映射的服務,提供了數(shù)據(jù)映射模式,能夠方便地把類映射到數(shù)據(jù) 庫。Flask-SQLAlchemy給Flask框 架 提 供了SQLAlchemy的支持,這樣Flask框架中利用SQLAlchemy操作數(shù)據(jù)庫就變得比較簡單[5]。當系統(tǒng)使用該SQLAlchemy時,只需要針對不同數(shù)據(jù)表設計封裝類,實現(xiàn)參數(shù)與表字段數(shù)據(jù)綁定,執(zhí)行SQL查詢時能夠防止SQL注入。
針對XSS攻擊注入,F(xiàn)lask框架采用Jinja2引擎,Jinja2是BSD許可證授權(quán)的模板引擎,包含許多功能和特性,包括替換、繼承、控制流等;它的特點是靈活、快速、安全。Jinja2速度快的原因有部分是因為它的規(guī)范,即Jinja2不允許放置任意的Python代碼,也不能放置Python表達式,只包含控制結(jié)構(gòu),沒有業(yè)務邏輯在其中,避免了耦合[6]。當系統(tǒng)后端服務往前端返回數(shù)據(jù)時,會自動轉(zhuǎn)義所有值,達到防XSS注入效果。
3.防跨站請求偽造
在Flask框架中,存在一個模塊flask_wtf.CSRFProtect用于保護表單防止跨站請求偽造(CSRF)。如圖2所示。
圖2 CSRF攻擊例子
在系統(tǒng)入口初始化時,引入flask_wtf.CSRFProtect并聲明一個安全密鑰(SECRET_KEY)參與csrf_token加密,在前端表單中添加一個隱形標簽“<input type="hidden" value="{{ csrf_token() }}" name="csrf_token" /> ”或者添加一個表單防跨站請求偽造聲明“{{ form.csrf_token }}”對表單進行保護,從而避免CSRF攻擊。
為了提高系統(tǒng)的性能,對token、cookie等占用緩存的參數(shù)縮短其刷新時間,防止用戶惡意請求多個token、cookie占用系統(tǒng)緩存。
Flask框 架 建 立 在Werkzeug WSGI(Web Server Gateway Interface)類庫之上,該類使用的是WSGI協(xié)議負責數(shù)據(jù)傳輸與請求封裝。系統(tǒng)改用uWSGI協(xié)議(網(wǎng)站分布式集群網(wǎng)絡應用的解決方案)能提升系統(tǒng)響應性能、降低內(nèi)存占用以及詳細監(jiān)控服務運行狀態(tài)(如服務性能與瓶頸)。uWSGI如 傳 統(tǒng)web服 務(Nginx、IIS、Apache)一樣負責封裝HTTP原始請求與TCP連接信息,實現(xiàn)了WSGI協(xié)議、uWSGI協(xié)議與HTTP等協(xié)議工作。
操作系統(tǒng)為macOS 10.15.14、CPU為Intel Core i7 2.8GHz、內(nèi)存為8GB、運行環(huán)境為Python 3.7.4、Web服務器使用Flask 1.1.1以及Werkzeug WSGI 1.0.0協(xié)議、數(shù)據(jù)庫使用SQLite 2.6.0;客戶端測試環(huán)境:操作系統(tǒng)為Windows10 17763版本、CPU為Intel Core i7 2.8GHz、內(nèi)存為4GB、瀏覽器為Chrome 81.0。
組織管理模塊測試分成兩個子模塊,分別是人員管理模塊測試與部門管理模塊測試。在兩個子模塊中,測試系統(tǒng)能否按照預期結(jié)果提供組織管理成員與部門的新增、編輯、刪除、查詢等功能,并且能對惡意數(shù)據(jù)與非法提交做攔截。
資產(chǎn)管理模塊測試系統(tǒng)能否按照預期結(jié)果提供資產(chǎn)管理的新增、查詢、編輯、刪除等功能,并且能對惡意數(shù)據(jù)與非法提交做攔截。
文檔管理模塊測試系統(tǒng)能否按照預期結(jié)果提供文檔管理的新增、查詢、編輯、刪除等功能,并且能對惡意數(shù)據(jù)與非法提交做攔截。
活動管理模塊測試系統(tǒng)能否按照預期結(jié)果提供活動管理的新增、查詢、編輯、刪除等功能,并且能對惡意數(shù)據(jù)與非法提交做攔截。
系統(tǒng)各模塊功能測試均通過,均正常提供管理服務。
3.安全性測試
系統(tǒng)存儲信息均為團隊內(nèi)敏感信息,此類信息均擁有一定的經(jīng)濟價值,為了保證系統(tǒng)信息的安全,對于系統(tǒng)進行安全性測試。常見的web安全威脅有SQL注入、XSS注入以及跨站請求偽造(CSRF)。
系統(tǒng)安全性各類攻擊測試均通過,均達到預期結(jié)果。系統(tǒng)擁有防SQL注入、XSS注入以跨站偽造請求措施,保證了系統(tǒng)運行安全性。
4.性能測試
系統(tǒng)性能經(jīng)測試均通過,均達到預期結(jié)果。系統(tǒng)擁有能應對短時間高并發(fā)請求,保證了系統(tǒng)運行的穩(wěn)定性。
本次測試結(jié)果符合預期結(jié)果,各項性能全部達標。
本文以高校組織為使用對象,設計一種團隊協(xié)作管理系統(tǒng),實現(xiàn)對團隊成員、部門、資產(chǎn)、文檔以及活動等數(shù)據(jù)進行信息化管理的目的,同時系統(tǒng)制定了嚴格的訪問控制權(quán)限,團隊成員可協(xié)同合作,共同管理,從而有效提升團隊運營管理效率,為推動團隊信息化建設與發(fā)展提供了借鑒。