掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
如今,隨著前端技術(shù)人才需求的不斷增加,越來(lái)越多的開(kāi)發(fā)者逐漸將JavaScript作為其開(kāi)發(fā)語(yǔ)言的第一選擇。

創(chuàng)新互聯(lián)公司憑借專(zhuān)業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專(zhuān)業(yè)的網(wǎng)站策劃、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都上千家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
目前無(wú)論是在傳統(tǒng)PC Web平臺(tái)還是移動(dòng)終端平臺(tái)上,在客戶(hù)端側(cè)或者服務(wù)端側(cè),JavaScript均有不俗的性能體現(xiàn)及豐富的框架支持,所以其作為一個(gè)主流開(kāi)發(fā)語(yǔ)言也逐漸被廣泛認(rèn)可接受。同時(shí),JavaScript 也因其解釋器性能上的優(yōu)勢(shì),可為企業(yè)解決可擴(kuò)展性和吞吐量等瓶頸問(wèn)題。所以JavaScript當(dāng)前來(lái)說(shuō)是一種重要的、強(qiáng)大的開(kāi)發(fā)語(yǔ)言,它的使用者也是日益增多。
但目前的問(wèn)題是,隨著越來(lái)越多的JS庫(kù)的出現(xiàn)及許多開(kāi)發(fā)者在以功能實(shí)現(xiàn)為導(dǎo)向時(shí),有時(shí)候會(huì)出現(xiàn)不安全編碼,而這也導(dǎo)致了許多客戶(hù)端側(cè)攻擊事件出現(xiàn),其中特別是DOM XSS最為普遍。在開(kāi)發(fā)這個(gè)工具之前,我們?cè)噲D分析代碼中引起DOM XSS攻擊的觸發(fā)點(diǎn),但苦于沒(méi)有足夠有效的工具來(lái)分析解決問(wèn)題。因此我們開(kāi)始嘗試開(kāi)發(fā)工具來(lái)分析解決代碼層面中的問(wèn)題,到這里我們將這款基于DOM XSS攻擊的代碼審計(jì)工具JSPrime定義為:一款JavaScript靜態(tài)分析工具,可進(jìn)行代碼審計(jì),且其是一款輕量級(jí)且極易上手的點(diǎn)擊式工具!其中,靜態(tài)分析功能模塊是基于當(dāng)前非常流行的Esprima ECMAScript語(yǔ)法進(jìn)行解析的。
下載地址
JSPrime GitHub下載地址:jsprime
JSPrime主要功能點(diǎn)
1、支持定位分析JS框架或庫(kù)的Source以及Sinks;
2、許多動(dòng)態(tài)或者靜態(tài)分析工具的開(kāi)發(fā)往往只支持純JavaScript語(yǔ)法及功能,可這對(duì)于大部分開(kāi)發(fā)者來(lái)說(shuō)這是個(gè)問(wèn)題,因?yàn)殚_(kāi)發(fā)過(guò)程中,通常會(huì)使用一些JavaScript框架或者庫(kù),像jQuery, YUI等等。因?yàn)檫@些掃描器被設(shè)計(jì)用以支持純JavaScript語(yǔ)法檢測(cè),其在理解開(kāi)發(fā)代碼內(nèi)容方面較為不成熟,容易產(chǎn)生誤報(bào)。所以為解決這個(gè)問(wèn)題,JSPrime是基于jQuery和YUI等框架,對(duì)用戶(hù)的存在危險(xiǎn)性質(zhì)的輸入來(lái)源source及代碼執(zhí)行sink輸入函數(shù)進(jìn)行檢測(cè)分析。以下為部分Source以及Sinks的具體信息,詳細(xì)可查看:Source&Sinks
3、變量及函數(shù)追蹤定位;
4、變量及函數(shù)范圍界限分析;
5、識(shí)別已知過(guò)濾函數(shù);
6、面向?qū)ο?OOP)分析及原形代碼設(shè)計(jì)合規(guī);
7、最小誤報(bào)率告警;
8、支持Minified.js庫(kù)(該庫(kù)目前功能包括DOM操作,事件,動(dòng)畫(huà),cookies和HTTP請(qǐng)求);
9、快速分析檢索能力;
10、點(diǎn)擊式操作(工具無(wú)需各種復(fù)雜操作,容易上手)。
安裝操作步驟
1、Web端操作
在瀏覽器中打開(kāi)“index.html”。
2、服務(wù)端操作
(1)若無(wú)安裝Node.js,請(qǐng)先前往:node.js中文網(wǎng)官網(wǎng)下載;
(2)完成第一步后,于終端中打開(kāi)此前從GitHub下載的文件中的server.js ,具體命令如下,
node server.js
(3)在服務(wù)端開(kāi)啟之后,于瀏覽器上輸入:127.0.0.1:8888。
DOM XSS分析測(cè)試用例
關(guān)于DOM XSS漏洞測(cè)試用例如下(這里只存放前五個(gè)測(cè)試用例),詳細(xì)測(cè)試用例(共61個(gè))請(qǐng)參考:百度網(wǎng)盤(pán),提取碼為6qfd。
- ---------------TEST CASE 01-------------
- var param = location.hash.split("#")[1];
- document.write("Hello " + param + "!");
- ---------------TEST CASE 02-------------
- function timedMsg(callback){
- if(callback){
- var t=setTimeout(eval('callback'),3000);
- return 0;
- }}
- function fire(){
- var call = location.hash.split("#")[1];
- timedMsg(call);
- }
- ---------------TEST CASE 03------------
- function timedMsg(callback){
- if(callback){
- var t=setTimeout(eval('callback'),3000);
- return 0;
- }}
- function fire(){
- var call = location.hash.split("#")[1];
- var check=timedMsg;
- check(call);
- }
- ---------------TEST CASE 04------------
- function timedMsg(abc,callback){
- if(callback){
- var t=setTimeout(eval('callback'),3000);
- return 0;
- }}
- function fire(){
- var call = location.hash.split("#")[1];
- timedMsg(12,"call");
- }
- ---------------TEST CASE 05------------
- function timedMsg(abc,callback){
- if(callback){
- var t=setTimeout(eval('callback'),3000);
- return 0;
- }}
- function fire(){
- var call = location.hash.split("#")[1];
- var check=timedMsg;
- check("123",call);
- }
相關(guān)功能測(cè)試截圖
前端界面如下,
分析結(jié)果如下,
服務(wù)器側(cè)界面及分析如下,
【編輯推薦】

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流