Является ли request.rawBody буфером? Я запутался в определении «buf» - PullRequest
0 голосов
/ 29 марта 2020

Я следую приведенному здесь коду: https://kiewic.com/validate-x-hub-signatue для проверки подписи заголовка, и я думаю, что все правильно и понятно, кроме 'buf'. Я никогда не слышал о буфере и, по некоторым исследованиям, думаю (?) Я пришел к выводу, что аргументом должен быть request.rawBody, но я не уверен.

// Sends the post body into the db and the header is used to validate the post
exports.addEvent = functions.https.onRequest((request, resolve) => {
    if (request.method !== "POST") {
        resolve.status(400).send('Please send a POST request')
        return
    }
    //This checks if the request is valid
    if (!verifyRequest(request, request.rawBody)) { 

Это запрос. rawBody правильный аргумент? ^^^^^^^^^^^^^^ as 'buf'

        resolve.status(400).send('Please send a valid request')
        return
    }
    // adds post body to the db
    fb.db.collection("fbCollectionToAddTo").add(request.body)
    return
})



  // Calculate the Signature header value. 
    function getSignature(buf) {
        var hmac = crypto.createHmac("sha1", "SECRETSTRING")
        hmac.update(buf, "utf-8")
        return "sha1=" + hmac.digest("hex")
    }

    // Verifies that the signature is correct
    function verifyRequest(req, buf) {
        var expected = req.headers['Signature']
        var calculated = getSignature(buf)
        console.log("Signature:", expected, "Content:", "-" + buf.toString('utf8') + "-")
        if (expected !== calculated) {
            console.log("Invalid signature.")
            return false
        } else {
            console.log("Valid signature!")
            return true
        }
    }

1 Ответ

0 голосов
/ 29 марта 2020

Согласно документации по облачным функциям и этот вопрос , request.rawBody фактически является буфером, который содержит все тело запроса. Верно ли это для вашего конкретного случая c, я не знаю. Если verifyRequest ожидает получить остальное тело в качестве второго аргумента, тогда да, выглядит нормально.

...