但 jquery 在有著諸多優點的同時,它本身也存一些安全問題,而所有的 jquery 安全問題都圍繞著那些被濫用的功能,jqurey 團隊修改了行為來保護開發人員,下面來看看常見的 jquery 安全問題的風險。
$() 與 jquery() 函式的最常見的書寫形式是一樣的,它返回乙個jquery物件:本質上要寫入dom的內容塊。
在大多數情況下,jquery函式將使用選擇器,元素或物件作為引數。
由雜湊(#)表示的選擇器是當前dom中現有html內容的識別符號。
在下面的例子中,我們將使用jquery html()函式來修改#mydivtag選擇器的元素:
注意「我的舊div標籤文字!」 不顯示。jquery在執行時修改dom來替換我們的div元素的文字:
再看看下面的例子:
根據這個例子可以看到,jquery函式類似於getelementbyid()函式。
但是有乙個重要的區別:jquery接受的不僅僅是乙個選擇器id,包括html和指令碼內容。比如:
jquery框架中沒有已知的直接xss漏洞(不包括jquery外掛程式)。但對於不受信任的內容引入到 jquery 時,dom (innerhtml,document.write()等)可能會被修改。
以下是最常見的漏洞**示例:
在下面的頁面中,我們可以直接在瀏覽器dom中引入任意指令碼,甚至繞過chrome的 xss審核
這個xss向量是很常見的,jquery最終改變了選擇器處理特性,為防止這種攻擊。我們阻止以「#」開始的html字串,並從window.location.hash 中開始阻止 xss
模擬xss問題:bug 9521 - $("#
")在以下使用jquery 1.6.1的例子中,模擬了xss錯誤。
這將以#字元開頭,從location.hash屬性中消耗的指令碼:
**成功執行。
在下面的示例中,我們將jquery公升級到1.6.3並執行相同的**:
**不再執行,也就是說 jquery-1.6.3 這個版本可以阻止像剛剛這種:bug 9521 - $("#
") 的問題。
模擬xss問題:
bug 11290 - $("element[attribute='
'")前面提到的jquery接受的不僅僅是乙個選擇器id,還包括html和指令碼內容。jquery可能會錯誤地識別乙個包含 < 作為html片段的選擇器,並嘗試解析並建立相關的元素
如圖:我們引入了 jquery-1.6.3.js 版本,並定義了
,最後執行結果如下:會發現 bug 11290 **被執行了
但當我換成 jquery-1.12.4.js 版本時,bug 11290 **不會執行,而會報錯:
三、jquery
的ajax $ .get()響應處理弱點
jquery ajax $ .get()函式(不要與.get()函式混淆)用於使您可能猜到的ajax get請求。發現在1.12.0之前的版本會自動評估響應內容,如果包含在響應中,則可能會執行指令碼。
此行為可能會促進應用程式中的兩個潛在漏洞。
將跨域請求交給不受信任域的應用程式可能會無意中執行指令碼,否則可能會被視為安全內容。
如果可以將指令碼注入到資料來源中,則可以在xss攻擊中利用對可信api端點的請求。
示例:當我們在頁面上傳送請求:$.get('') 時,攻擊者可能會用 type="text/j**ascript" 來回應我們,並寫上惡意的執行**,如:
模擬 $.get()響應 問題:
jquery issue 2432 - 3rd party $.get() auto executes if content type is text/j**ascript
test.html 頁面:
在 **上惡意彈出乙個層
總結:
像幾乎所有的現代軟體一樣,jquery旨在強大而多功能。
有無數安全和合法的功能,在濫用時可能會導致安全漏洞。
這裡描述的jquery問題都是軟體的結果,該軟體按照設計執行,但是被不正確地執行。
區塊鏈安全解釋
鏈客,有問必答!科技專家 企業家謝爾曼 李 sherman lee 最近表示 區塊鏈本身可能是不可信 不可改變和清廉的,但如果我們忽略其中存在的漏洞,它們就相當於使價值數十億美元鎖在有問題的保險箱裡。區塊鏈因其複雜的數 算而自吹自擂為 廉潔 但在現實中,如果在實際場景中實現,生成的軟體可能會有可能導...
解釋性模型
模型在幫助領域學習方面也具有很大價值。對設計起到推動作用的模型是領域的乙個檢視,但為了學習領域,還可以引入其他檢視,這些檢視只用作傳遞一般領域知識的教學工具。出於此摸底,人們可以使用如軟體設計無關的其他種類模型的那些或文字。使用其他模型的乙個特殊原因是範圍。驅動軟體開發過程的技術模型必須經過嚴格的精...
xgboost輸出模型解釋
xgboost模型輸出的解釋 使用經典的鳶尾花的資料來說明.這是乙個二分類的問題,判斷是不是鳶尾花,這裡只取前100行的資料,並對訓練集和測試集進行了切分。預設有25個樣本作測試集。如下 import xgboost as xgb from sklearn.model selection impor...