五分鐘新概念之函式劫持

2021-10-03 14:19:30 字數 796 閱讀 4141

今天接觸到了乙個陌生的名詞:函式劫持,查了一些資料記錄一下。

函式劫持的意思是在乙個函式執行之前把它劫持下來,新增我們想要的功能,然後再呼叫原來的函式執行。這也是常見的鉤子函式的原理之一。

舉乙個簡單的例子:

var _alert = alert;

window.alert = function(s)

複製**

二、應用

xss攻擊經常使用alert測試是否存在跨站,所以可以通過劫持alert函式來監測是否有人在攻擊你的**。在監測的頁面劫持alert函式,記錄呼叫情況。function report(caller) ;

}var _alert = window.alert

window.alert = function(s)

複製**

自定義業務功能。業務**經常會有新需求的加入,對原**進行修改匹配,常常比較耗費時間,這個時候就可以使用函式劫持,在不修改原業務邏輯的前提下,增加新功能。

三、劫持與反劫持

function injectscriptintoiframe(f, proc)

複製**舉個例子,對於涉及到反饋資訊的api可以封裝到函式中,呼叫方法在iframe中執行:// 將資訊相關封裝到函式中,在iframe中呼叫

function payload()

var f = createiframe(top);

injectscriptintoiframe(f, payload);

複製**

四、參考

[1] 函式劫持

[2] 談談js中的函式劫持

pyecharts之五分鐘上手

pyecharts官方教程 因為數學建模和平時分析一些資料都會用到視覺化的東西,就來學學pyecharts。五分鐘快速上手 import pyecharts from pyecharts.charts import bar bar bar bar.add xaxis 襯衫 羊毛衫 雪紡衫 褲子 高跟...

五分鐘精通Oracle Hints

出處 在向大家詳細介紹oracle hints之前,首先讓大家了解下oracle hints是什麼,然後全面介紹oracle hints,希望對大家有用。基於代價的優化器是很聰明的,在絕大多數情況下它會選擇正確的優化器,減輕了dba的負擔。但有時它也聰明反被聰明誤,選擇了很差的執行計畫,使某個語句的...

Git五分鐘教程

使用git前,需要先建立乙個倉庫 repository 您可以使用乙個已經存在的目錄作為git倉庫或建立乙個空目錄。git initgit init newrepo從現在開始,我們將假設您在git倉庫根目錄下,除非另有說明。我們有乙個倉庫,但什麼也沒有,可以使用add命令新增檔案。git add f...