Netsparker Standard 表單身份驗證的自定義腳本
Netsparker Standard中用于表單身份驗證的自定義腳本
有時,您將需要修改Netsparker的自動身份驗證,以使其適合您的網站。自定義腳本支持使您能夠自動執行網站的表單身份驗證過程。以下是一些示例方案:
- 如果您的登錄表單不是具有兩個輸入字段的常規登錄表單,則可能需要從框或下拉菜單中選擇一個部門
- 登錄表單上的“提交”按鈕不是常規的HTML按鈕
- 登錄表單頁面中有多個表單,并且Netsparker無法檢測到正確的表單(例如,Netsparker在同一頁面上找到注冊表單)
- 加載頁面時,DOM中不存在登錄表單頁面,但是您需要單擊鏈接以使登錄表單顯示在頁面上,通常在虛擬登錄對話框中
- 身份驗證過程由多個頁面導航組成,您首先訪問一個頁面以獲取Cookie,另一個頁面輸入用戶名,另一個頁面輸入密碼。
- Netsparker由于其他各種原因而無法找到登錄表單
Netsparker中用于表單身份驗證的自定義腳本可以用JavaScript編寫。Netsparker在表單身份驗證頁面的上下文中執行代碼,您可以在其中訪問和操作頁面DOM。該代碼在頁面完全加載時執行。您可以使用現代瀏覽器支持的任何HTML API來查找登錄表單元素并完成它們。
自定義腳本編輯器
自定義腳本編輯器是您編寫自定義腳本的地方。它由三部分組成:腳本編輯器,嵌入式瀏覽器視圖和開發人員工具面板。

腳本編輯器
如圖所示,在腳本編輯器中編寫腳本。這里也支持現代瀏覽器支持的任何HTML,JavaScript或DOM API。另外,您可以在netsparker.auth命名空間中使用Netsparker提供的一些幫助程序功能。例如,這些功能將幫助您完成輸入值和click元素。
瀏覽器視圖
右側的瀏覽器視圖可幫助您預覽登錄表單頁面并為身份驗證頁面上的元素生成代碼。打開后,此窗口將加載登錄表單URL。
您可以右鍵單擊頁面上的元素以查看上下文菜單,以使用代碼生成選項。
您可以分別使用“ 生成元素代碼” 和“ 生成元素代碼(延遲2000毫秒)” 菜單項生成立即可用或延遲后起作用的代碼。當您單擊這些菜單項時,將在左側的腳本編輯器中添加一行代碼。
如果已為輸入值生成代碼,則將生成設置值的JavaScript代碼。
如果為諸如按鈕或錨點之類的元素生成代碼,則會生成單擊該元素的JavaScript代碼。
您還可以自定義自動生成的代碼。例如,您可以 使用諸如john.doe之類的硬編碼JavaScript字符串替換 為setValueByQuery調用生成的變量用戶名(但是,如果要提供憑據值,則鼓勵使用諸如用戶名和密碼之類的動態變量)。如上所述,腳本中有兩個變量用戶名和密碼可用。這些變量將在執行時包含活動角色的憑據,通過使用這些變量,您的腳本將具有足夠的通用性以支持多個角色功能。

開發人員工具面板
瀏覽器視圖下方的開發人員工具面板包含各種Web開發幫助器選項卡。它們在瀏覽器視圖中當前加載的頁面的上下文中工作,并使您能夠:
- 在“元素”選項卡中檢查HTML元素的當前狀態
- 在“網絡”選項卡中監視HTTP請求
- 在“控制臺”選項卡中查看日志并執行腳本代碼
工具欄按鈕
下表列出并說明了此窗口中的工具欄按鈕。
| 按鈕 | 說明 |
|---|---|
| 加載登錄表格(F4) | 加載登錄表單(F4):按此按鈕,將創建一個新的瀏覽器視圖實例,并將指定的登錄表單URL加載到該瀏覽器視圖中。當您按下此按鈕時,不會執行任何自定義腳本代碼,并且任何cookie值都將從先前的瀏覽器視圖中消失。 |
| 測試腳本(F5) | 單擊以開始執行您編寫的自定義腳本代碼。您的登錄表單URL將被加載到新的瀏覽器視圖中,一旦登錄表單完全加載,腳本將開始執行。如果您有幾頁自定義腳本,則將按照其編寫順序執行它們。您可以在瀏覽器視圖上方的地址欄旁查看當前頁面的狀態和腳本執行的狀態。 |
| 清除 | 單擊以清除當前頁面腳本編輯器中的所有代碼。 |
| 范本 | 單擊以查看示例腳本模板。選擇一個以加載預定義的腳本。您可以從這些示例代碼開始,然后調整此腳本以適合您的需求。 |
| 生成優化代碼復選框 | 下面的瀏覽器視圖默認為選中狀態。啟用后,Generate element菜單項將嘗試生成最優化和最短的CSS查詢代碼。例如,如果您有一個帶有id值的HTML元素,由于HTML文檔中的id值唯一地標識一個元素,因此將生成一個非常簡潔的CSS查詢選擇器。在某些情況下,您可能為元素隨機生成了id值,并且每次加載頁面時都有不同的值,因此,在這些情況下,您可能要取消選中此選項以生成不使用id值的替代CSS查詢。 |
在多頁上執行腳本
如果您的表單身份驗證包含多個頁面或具有重定向,則可以編寫和使用自定義腳本。對于大多數這些情況,單個頁面的自定義腳本將幫助您通過網站進行身份驗證。此屏幕快照顯示了表單身份驗證方案,其中在第一頁上輸入了用戶名(在此示例中為電子郵件地址),在下一頁上輸入了密碼。

由于加載每個頁面后都有一個全新的文檔上下文,因此您需要輸入自定義腳本代碼以將各個頁面專用于該頁面。Netsparker為您提供了在表單身份驗證過程中每次頁面導航后執行自定義腳本代碼的機會。因此,您要做的就是在此窗口上創建腳本頁面,并為該頁面編寫相應的代碼。
表單身份驗證疑難解答,技巧和竅門
問:我的登錄表單是在嵌入式對話框中動態呈現的,而Netsparker找不到它,如何填寫該登錄表單?
編寫一個自定義腳本,該腳本首先單擊觸發對話框的鏈接或按鈕,并在延遲后填充登錄表單:
netsparker.auth.clickByQuery('#header > div.row > a:nth-child(1)'); // Trigger the login dialognetsparker.auth.setValueByQuery('#email', username, 2000);netsparker.auth.setValueByQuery('#password', password, 2000);netsparker.auth.clickByQuery('#login-button', 3000);
上面的代碼將首先觸發登錄對話框(第一行),兩秒鐘后填寫用戶名和密碼,然后在第三秒單擊對話框中的登錄按鈕。
問:我的登錄表單還有其他一些字段以及用戶名和密碼,如何填寫該登錄表單?
答:編寫自定義腳本以填充當前角色角色變量的用戶名和密碼,并將其余憑據硬編碼到腳本中:
netsparker.auth.setValueByQuery('#Username', username);netsparker.auth.setValueByQuery('#Password', password);netsparker.auth.setValueByQuery('#LoginCode', '4815162342'); // Hard-coded extra credentialnetsparker.auth.clickByQuery('#LoginButton');
問:如何提供表單身份驗證所需的自定義cookie?
答:在當前掃描配置文件的“常規”部分的“自定義Cookie”部分中指定cookie。這些cookie將在表單身份驗證請求期間發出。
問:如何在表單身份驗證期間提供自定義標頭值或更改用戶代理字符串?
答:您可以使用自定義標頭值和/或修改的用戶代理字符串創建掃描策略,并在表單身份驗證期間在當前配置文件中選擇它。
問:我的網站要求我在顯示登錄表單URL之前先訪問一些頁面,但是我無法直接使用登錄表單URL,我該如何進行身份驗證?
答:將需要訪問的第一頁用作登錄表單URL。然后,使用自定義腳本編寫用于對每個需要訪問的頁面執行導航的代碼。您可以通過腳本單擊HTML元素,也可以只使用如下代碼執行導航:
document.location = 'https://mysite.com/login/next_page.htm';
問:我的網站在到達登錄表單之前執行了幾次重定向,如何為登錄表單編寫自定義腳本代碼?
答:為每個重定向創建自定義腳本頁面,而使腳本編輯器為空,并在最后一頁上編寫用于登錄表單的自定義腳本。Netsparker不會為執行重定向的頁面運行任何代碼。
問:我需要在一定時間后運行一些腳本代碼,該怎么辦?
答:使用內置的setTimeout JavaScript函數:
setTimeout(function() { // Write your JavaScript code here to execute after 2000 milliseconds}, 2000);
提示:使用Netsparker表單身份驗證API(netsparker.auth)提供的功能來設置輸入值或單擊元素。這些函數不僅設置值或click元素,而且還模擬用戶執行這些任務時觸發的所有必要JavaScript事件。一些JavaScript框架要求觸發這些事件,因此僅設置輸入值或單擊元素可能不夠。
提示:您不一定需要單擊頁面上的“登錄”按鈕。如果您具有執行登錄的JavaScript函數,則可以在填寫登錄表單后調用該函數:
netsparker.auth.setValueByQuery('#Username', username);netsparker.auth.setValueByQuery('#Password', password);MyApp.LoginController.DoLogin();
已知的問題
- Netsparker不支持在表單身份驗證過程中打開的彈出窗口的腳本支持。如果可能,請使用加載到彈出窗口中的URL作為您的登錄表單URL。
Netsparker Standard 中文漢化使用教程
推薦文章: