欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種增強JavaScript函數封裝性的方法

文檔序號:6509033閱讀:166來源:國知局
一種增強JavaScript函數封裝性的方法
【專利摘要】本發(fā)明公開了一種增強JavaScript函數封裝性的方法,包括如下步驟:附加訪問權限控制符到JavaScript函數,定義JavaScript函數的封裝性;根據JavaScript函數訪問權限控制符和函數封裝性定義,設計JavaScript程序預處理系統(tǒng)生成JavaScript函數的監(jiān)控代碼;運用JavaScript函數監(jiān)控代碼,在運行時監(jiān)控JavaScript程序的運行過程,阻止違反JavaScript函數封裝性定義的函數調用。本發(fā)明提供了一種安全可靠、便于程序員學習和使用的增強JavaScript函數封裝性的方法,以增強JavaScript函數的封裝性,提高JavaScript程序的模塊化和實現隱藏,增加JavaScript程序的安全性和正確性。
【專利說明】—種增強JavaScr i pt函數封裝性的方法
【技術領域】
[0001]本發(fā)明涉及軟件安全領域,更具體的說是涉及一種增強JavaScript函數封裝性的方法。
【背景技術】
[0002]JavaScript (語言規(guī)范是ECMAScript),是一種廣泛用于客戶端網頁開發(fā)的腳本語言,最早是在HTML上使用的,用來給HTML網頁添加動態(tài)功能,然而現在JavaScript也可被用于網絡服務器,如Node, js。不同于服務器端腳本語言(例如PHP與ASP), JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行,其源代碼在發(fā)往客戶端運行之前不需經過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運行,不需要服務器的支持。所以在早期程序員比較青睞于JavaScript以減少對服務器的負擔,而與此同時也帶來另一個問題:安全性。隨著服務器的強壯,雖然現在的程序員更喜歡運行于服務端的腳本以保證安全,但JavaScript仍然以其跨平臺、容易上手等優(yōu)勢大行其道。
[0003]函數是JavaScript程序的基本結構,JavaScript程序由一組函數組成,只有確保目標JavaScript函數安全和可靠的執(zhí)行,JavaScript程序才能被安全和可靠的執(zhí)行,不產生危險和惡意的程序行為。
[0004]但是目前,由于JavaScript語言的某些動態(tài)語法特性,例如函數閉包和原型繼承,缺乏有效的函數封裝性機制支持,破壞了傳統(tǒng)的軟件模塊化原則,容易引起JavaScript程序的可靠性和安全性問題。
[0005]而主流的靜態(tài)面向對象語言一般具有訪問權限控制符和完善的函數封裝性機制,如果可以借鑒主流靜態(tài)面向對象語言的封裝性機制,來設計一種增強JavaScript函數封裝性的方法,將有利于提高JavaScript程序的模塊化和實現隱藏,增加JavaScript程序的安全性和正確性。

【發(fā)明內容】

[0006]為解決上述問題,本發(fā)明的目的在于提供一種安全可靠、便于程序員學習和使用的增強JavaScript函數封裝性的方法,以增強JavaScript函數的封裝性,提高JavaScript程序的模塊化和實現隱藏,增加JavaScript程序的安全性和正確性。
[0007]為實現上述目的,本發(fā)明的技術方案為:
一種增強JavaScript函數封裝性的方法,包括如下步驟:
51:附加訪問權限控制符到JavaScript函數,定義JavaScript函數的封裝性;
52:根據步驟SI提出的JavaScript函數訪問權限控制符和JavaScript函數封裝性定義,設計JavaScript程序預處理系統(tǒng)生成JavaScript函數的監(jiān)控代碼;
53:運用JavaScript函數監(jiān)控代碼,在運行時監(jiān)控JavaScript程序的運行過程,阻止違反JavaScript函數封裝性定義的函數調用。
[0008]進一步的,所述步驟SI中的訪問權限控制符設置為字符A、字符B和字符C,所述JavaScript函數的封裝性定義如下:
使用字符A修飾目標函數時,允許當前函數所在范圍的語句調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數;
使用字符B修飾目標函數時,允許當前函數所在范圍的語句調用目標函數,允許友員函數內部范圍內的語句調用目標函數,禁止其他訪問控制范圍內的語句調用目標函數;使用字符C修飾目標函數時,允許目標函數所在范圍的語句調用目標函數,允許從目標函數的外部范圍的函數原型繼承的函數調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數。
[0009]優(yōu)選的,所述字符A、字符B和字符C分別設置為current、friend和inherit。
[0010]進一步的,所述步驟S2中,預處理系統(tǒng)根據目標函數的封裝性定義掃描目標函數的程序上下文,生成目標函數的監(jiān)控代碼,其具體步驟如下:
521:掃描附加訪問權限控制符的目標函數,生成目標函數的包裝函數;
522:用步驟S21中生成的包裝函數代碼替換源程序中的目標函數代碼;
523:在步驟S22中生成的程序前面附加對JavaScript面向方面擴展庫的調用;
524:根據目標函數的訪問權限控制符,在步驟S23生成的程序后面附加相應的授權代碼,授權代碼利用JavaScript面向方面擴展庫監(jiān)控訪問控制范圍內的目標函數的調用,對正確的目標函數調用進行授權;
525:在步驟S24生成的程序后面附加檢查函數的定義,檢查函數的參數是目標函數名稱,測試對目標函數的調用是否正確;
526:將步驟S25生成的程序替換包含目標函數的源程序。
[0011]進一步的,所述步驟S3具體包括步驟如下:
531:當目標函數被執(zhí)行,繼續(xù)執(zhí)行步驟S32 ;
532:如果針對目標函數的調用在所述JavaScript函數的封裝性定義范圍內,繼續(xù)執(zhí)行步驟S33 ;如果針對目標函數的調用不在JavaScript函數的封裝性定義范圍內,執(zhí)行步驟 S34 ;
533:授權代碼對正確的目標函數調用進行授權,繼續(xù)執(zhí)行步驟S34 ;
534:調用包裝函數,繼續(xù)執(zhí)行步驟S35 ;
535:調用檢查函數,檢查針對目標函數的調用是否合法,如果針對目標函數的調用已被授權,執(zhí)行步驟36 ;如果針對目標函數的調用沒有被授權,則拋出運行時異常;
536:執(zhí)行目標函數,完成后繼續(xù)執(zhí)行程序。
[0012]本發(fā)明增強JavaScript函數封裝性的方法取得的有益效果:(I)借鑒了主流靜態(tài)面向對象語言的訪問控制權限控制符和封裝性體制,可以方便熟悉主流靜態(tài)面向對象語言的程序員學習和使用;(2)增強JavaScript函數的封裝性,有利于提高JavaScript程序的模塊化和實現隱藏,增加JavaScript程序的安全性和正確性。
【專利附圖】

【附圖說明】
[0013]圖1為本發(fā)明的方法流程圖示。
[0014]圖2為本發(fā)明實施例中生成JavaScript函數監(jiān)控代碼的流程圖示。
[0015]圖3為本發(fā)明實施例中預處理系統(tǒng)生成的JavaScript源程序(目標函數變成其wrapper函數)和監(jiān)控代碼。
[0016]圖4為本發(fā)明實施例中運用監(jiān)控代碼在運行中監(jiān)控JavaScript程序的流程圖示?!揪唧w實施方式】
[0017]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]請參照圖一所示,本發(fā)明實施例增強JavaScript函數封裝性的方法包括如下步驟:
51:附加訪問權限控制符到JavaScript函數,定義JavaScript函數的封裝性,具體如
下:
主流靜態(tài)面向對象語言中的訪問權限控制符private、protected和public是JavaScript語言標準ECMAScript保留字,不允許在合法的JavaScript程序中出現。步驟SI中的訪問權限控制符設置為字符A、字符B和字符C,在本實施例中,所述訪問權限控制符A、B和C分別設置為:當前訪問權限修飾符“current”、友好訪問權限控制符“friend”和繼承訪問權限修飾符“inherit”。訪問權限控制符A、B、C還可以采用除保留字以外的其它任意字符。根據上述訪問權限控制符,將JavaScript函數的封裝性定義如下:
使用current修飾目標函數,允許當前函數所在范圍的語句調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數;使用friend修飾目標函數,允許當前函數所在范圍的語句調用目標函數,允許友員函數內部范圍內的語句調用目標函數,禁止其他訪問控制范圍內的語句調用目標函數;使用inherit修飾目標函數,允許目標函數所在范圍的語句調用目標函數,允許從目標函數的外部范圍的函數原型繼承的函數調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數,具體如下表所述:
【權利要求】
1.一種增強JavaScript函數封裝性的方法,其特性在于,包括如下步驟: 51:附加訪問權限控制符到JavaScript函數,定義JavaScript函數的封裝性; 52:根據步驟SI提出的JavaScript函數訪問權限控制符和JavaScript函數封裝性定義,設計JavaScript程序預處理系統(tǒng)生成JavaScript函數的監(jiān)控代碼; 53:運用JavaScript函數監(jiān)控代碼,在運行時監(jiān)控JavaScript程序的運行過程,阻止違反JavaScript函數封裝性定義的函數調用。
2.根據權利要求1所述的增強JavaScript函數封裝性的方法,其特性在于:所述步驟SI中的訪問權限控制符設置為字符A、字符B和字符C,所述JavaScript函數的封裝性定義如下: 使用字符A修飾目標函數,允許當前函數所在范圍的語句調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數; 使用字符B修飾目標函數,允許當前函數所在范圍的語句調用目標函數,允許友員函數內部范圍內的語句調用目標函數,禁止其他訪問控制范圍內的語句調用目標函數; 使用字符C修飾目標函數,允許目標函數所在范圍的語句調用目標函數,允許從目標函數的外部范圍的函數原型繼承的函數調用目標函數,禁止其它訪問控制范圍內的語句調用目標函數。
3.根據權利要求2所述的增強JavaScript函數封裝性的方法,其特性在于:所述步驟S2中,預處理系統(tǒng)根據目標函數的封裝性定義掃描目標函數的程序上下文,生成目標函數的監(jiān)控代碼。
4.根據權利要求3所 述的增強JavaScript函數封裝性的方法,其特性在于,所述步驟S2具體包括: 521:掃描附加訪問權限控制符的目標函數,生成目標函數的包裝函數; 522:用步驟S21中生成的包裝函數代碼替換源程序中的目標函數代碼; 523:在步驟S22中生成的程序前面附加對JavaScript面向方面擴展庫的調用; 524:根據目標函數的訪問權限控制符,在步驟S23生成的程序后面附加相應的授權代碼,授權代碼利用JavaScript面向方面擴展庫監(jiān)控訪問控制范圍內的目標函數的調用,對正確的目標函數調用進行授權; 525:在步驟S24生成的程序后面附加檢查函數的定義,檢查函數的參數是目標函數名稱,測試對目標函數的調用是否正確; 526:將步驟S25生成的程序替換包含目標函數的源程序。
5.根據權利要求4所述的增強JavaScript函數封裝性的方法,其特性在于:所述步驟S3具體包括如下: 531:當目標函數被執(zhí)行,繼續(xù)執(zhí)行步驟S32 ; 532:如果針對目標函數的調用在所述JavaScript函數的封裝性定義范圍內,繼續(xù)執(zhí)行步驟S33 ;如果針對目標函數的調用不在JavaScript函數的封裝性定義范圍內,執(zhí)行步驟 S34 ; 533:授權代碼對正確的目標函數調用進行授權,繼續(xù)執(zhí)行步驟S34 ; 534:調用包裝函數,繼續(xù)執(zhí)行步驟S35 ; 535:調用檢查函數,檢查針對目標函數的調用是否合法,如果針對目標函數的調用已被授權,執(zhí)行步驟36 ;如果針對目標函數的調用沒有被授權,則拋出運行時異常; S36:執(zhí)行目標函數,完成后繼續(xù)執(zhí)行程序。
6.根據權利要求2-5中任一所述的增強JavaScript函數封裝性的方法,其特性在于,所述字符A、字符B和字符C分別設 置為current、friend和inherit。
【文檔編號】G06F21/12GK103440440SQ201310378376
【公開日】2013年12月11日 申請日期:2013年8月27日 優(yōu)先權日:2013年8月27日
【發(fā)明者】吳明暉, 呂嘉 申請人:浙江大學城市學院
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西安市| 西青区| 大关县| 南平市| 安化县| 漳州市| 盐津县| 揭阳市| 城市| 芜湖县| 周口市| 共和县| 邢台县| 布尔津县| 五河县| 仁怀市| 怀化市| 张家川| 珲春市| 罗定市| 昭平县| 香格里拉县| 铜川市| 丽江市| 思南县| 都江堰市| 黑河市| 霍山县| 田东县| 安阳县| 镇平县| 专栏| 蓝山县| 深泽县| 于田县| 轮台县| 西乌| 永川市| 剑川县| 广河县| 文昌市|