<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Netsparker Standard如何進行HMAC身份驗證

    通過Netsparker Standard中的腳本進行HMAC身份驗證

    基于哈希的消息認證碼(HMAC)用于基于對稱密碼學的完整性和真實性檢查。

    目標Web應用程序的客戶端和服務器共享一個秘密密鑰和一個應用程序ID,這些密鑰和一個應用程序ID用于計算用于簽名并驗證HTTP請求的哈希碼:

    • 客戶端使用此密鑰和應用程序ID對發送到服務器的每個HTTP請求進行簽名。
    • 然后,服務器使用相同的密鑰和應用程序ID來驗證屬于該客戶端的請求,并且在傳輸到服務器時未更改(MiTM 攻擊)。

    Netsparker公開其請求對象,該對象允許用戶使用此腳本功能修改HTTP請求標頭。

    API開發平臺Postman也具有類似的功能,允許用戶編寫請求前腳本。如果將郵遞員導出文件導入到Netsparker,則也將導入預請求腳本。

    盡管因實現而異,但大多數HMAC實現都使用HTTP方法,請求路徑,查詢字符串,時間戳和有效負載數據來計算簽名。Netsparker在腳本API中公開了所有這些屬性。

    Netsparker的腳本API提供SHA512和SHA256哈希函數,使您能夠計算請求哈希。

    郵遞員預請求腳本樣例

    Netsparker可以使用一個簡單的Postman預請求腳本(例如下面定義的腳本)來編寫HMAC標頭。此標頭將添加到Netsparker發送的所有請求標頭中:

    function getPath(url) {
     var pathRegex = /.+?\:\/\/.+?(\/.+?)(?:#|\?|$)/;
     var result = url.match(pathRegex);
     return result && result.length > 1 ? result[1] : '';
    }
    
    function getQueryString(url) {
     var arrSplit = url.split('?');
     return arrSplit.length > 1 ? url.substring(url.indexOf('?')+1) : '';
    }
    
    function getAuthHeader(httpMethod, requestUrl, requestBody) {
     var CLIENT_KEY = 'REPLACE_WITH_YOUR_CLIENT_KEY';
     var SECRET_KEY = 'REPLACE_WITH_YOUR_SECRET_KEY';
     var AUTH_TYPE = 'HMAC-SHA512';
    
     var requestPath = getPath(requestUrl);
     var queryString = getQueryString(requestUrl);
     if (httpMethod == 'GET' || !requestBody) {
     requestBody = '';
     } else {
     requestBody = JSON.stringify(requestBody);
     }
    
     var hashedPayload = CryptoJS.enc.Hex.stringify(CryptoJS.SHA512(requestBody));
    
     var timestamp = new Date().toISOString().split('.')[0]+"Z";
     var requestData = [httpMethod, requestPath, queryString, timestamp, hashedPayload].join("\n");
     var hashedRequestData = CryptoJS.enc.Hex.stringify(CryptoJS.SHA512(requestData));
    
     var hmacDigest = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(hashedRequestData, SECRET_KEY));
     var authHeader = AUTH_TYPE + ' timestamp=' + timestamp + ",
     client=" + CLIENT_KEY + ', signature=' + hmacDigest;
     return authHeader;
    }
    
    netsparker.setEnvironmentVariable('hmacAuthHeader', getAuthHeader(request['method'],
     request['url'], request['data']));
    • 在該示例中,在第25-38行之間,the request method, path, query stringtimestamp值生成有效負載。該有效負載用于計算請求的哈希。秘密密鑰用作SHA-512哈希函數的密鑰。

    • 在計算完哈希之后,在第33-34行中通過串聯以下各項來構建身份驗證頭:

    • 使用的哈希函數的名稱

    • 計算哈希值的時間戳

    • 服務器提供的客戶端密鑰

    • 哈希函數的輸出

    這些值形成hmac身份驗證標頭。在第38行,此值分配給名為的Postman變量hmacAuthHeader。要將此變量用作身份驗證標頭,請將身份驗證標頭添加到Netsparker,并將其值設置為“ {{hmacAuthHeader}}”。雙花括號表示此值不是恒定的。Netsparker只是查找和替換的占位符。

    如何通過Netsparker Standard中的腳本配置HMAC身份驗證

    1. 打開Netsparker Standard。
    2. 在“啟動新掃描”對話框中,單擊“ 預請求腳本” 選項卡。
    3. 選擇啟用復選框。
    4. 單擊“ 預設” 下拉列表,然后選擇“ HMAC”。

    Netsparker Standard如何進行HMAC身份驗證

    1. 單擊標題選項卡。

    Netsparker Standard如何進行HMAC身份驗證

    1. 添加具有以下值的Authorization標頭:{{hmacAuthHeader}}。這將添加一個預請求腳本,該腳本將計算HMAC哈希。要將此標頭用于所有請求,我們還在標頭標簽中添加了一個占位符:{{hmacAuthHeader}}。請求前腳本引擎將執行此JavaScript代碼,并在Netsparker發出的每個請求之前計算標頭。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类