编程语言
首页 > 编程语言> > php – 在第三方调用WebHook中验证用户身份

php – 在第三方调用WebHook中验证用户身份

作者:互联网

我有一个设置

>用户可能会也可能不会登录我的网站,
>用户将表​​单提交给第三方服务,并且
>第三方服务做了它的事情,然后在我的网站上调用“webhook”,转发所有$_POST数据.

所以说明一下:

    +---------------------+         +---------------------------+
    | mysite.com/form.php |-------->| thirdparty.com/submit.php |
    +---------------------+         +---------------------------+
                                                  |
                                                  v
                                    +---------------------------+
                                    |   mysite.com/webhook.php  |
                                    +---------------------------+

如果用户在提交表单时已登录,那么如何在webhook中告知并验证此事实?

例如,我可以天真地设置隐藏的字段,

<input type="hidden" name="loggedOn" value="true" />

但任何人都可以欺骗它.我以为我可能会通过用户的密码哈希,

<input type="hidden" name="passwordHash" value="$2a$08$Lg5XF1Tt.X5TGyfb43vBBeEFZm4GTXQhKQ6SY6emkcnhAGT8KfxFS" />

有效地使webhook再次“登录”,但这可能不正确,因为它会将用户的密码哈希暴露给客户端.

我认为必须有一个更好的方法来使用会话机制这样做,但我是新的会话.也许我错过了合适的词汇?有人会引导我朝着正确的方向前进吗?谢谢!

编辑:

经过进一步的研究,我认为正确的方法是将一个隐藏的表单字段sid设置为会话ID,session_id(),以便将其传递给webhook,而webhook又将使用会话ID继续会话,session_id($_POST [ ‘SID’]);在session_start();.我现在的问题是这是否是规范(和安全)的解决方案.

解决方法:

使用会话ID有助于跟踪谁发出请求并提供一些安全保护.

您还可以考虑向第三方提出每个请求:

>用于检测重放的随机数
>用于检测旧请求的时间戳
>每个请求发送一个.您可以对可能被篡改的任何值进行签名/哈希,并在webhook中验证这些值

标签:php,authentication,security,webhooks,session,digital-signature,hmac
来源: https://codeday.me/bug/20190901/1786249.html