reCaptcha v2服务器端验证

时间:2019-07-23 05:26:14

标签: recaptcha

我将google-recaptcha作为npm软件包下载到了我的项目中,并根据提供的说明进行了设置并“有效”。

除了不是。

在测试中,我输入了垃圾数据作为reCaptcha响应,它仍然有效!然后我输入了一个空白(空)字符串,它也可以正常工作!无论输入什么,reCaptcha似乎都可以正常工作。这是一个以空字符串作为reCaptcha响应参数的示例:

await googleRecaptcha.verify({ response: '' }, (error) => {
            if (error) {
                console.log('reCaptcha Error: ');
                console.log(error);

                return {
                    statusCode: 500,
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        success: false,
                        message: error.message
                    })
                };
            }

            console.log('reCaptcha OK');

            return {
                statusCode: 200,
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    success: true,
                    message: 'reCaptcha successfully verified!'
                })
            };
        });

在所有情况下,reCaptcha都会发送200 OK响应。我想念什么吗?如果一切都被接受,服务器端验证又有什么意义呢?我给人的印象是Google将reCaptcha响应作为唯一令牌来验证它实际上是有效的(而不是任何人都可以组成的随机字符串)。但这似乎没有这样做。

我尝试手动执行相同的操作(将请求直接发送到Google的reCaptcha验证URL),并获得了相同的结果。

0 个答案:

没有答案