如何在Laravel中正确创建签名的webhook结构?

问题描述 投票:2回答:1

我的应用程序(APP 1)中有一个webhook,其中我的另一个应用程序(APP 2)需要定期命中,但是我正在考虑安全地签署这些请求的方法,以确保只能访问webhook enpoint通过该应用程序。我想到了以下几点:

  • 在APP1的env中保存秘密哈希,并且对于APP2发送的每个请求,在特定报头中添加哈希值进行比较。

但是我觉得这种方法相当基本,因为如果有人掌握了这个秘密,他们就能够访问端点。应该使用某种公钥密钥组合吗?有什么建议?

php laravel webhooks sign
1个回答
0
投票

如果系统在同一个后端工作或者可以访问相同的数据库或类似数据库,那么最简单的方法是为每个请求滚动一个新的哈希并将其保存在本地。

  1. APP1生成散列并存储在文件〜/ secret_app_hash中
  2. APP2读取文件〜/ secret_app_hash并使用此参数发送请求
  3. APP1收到HTTPS请求,验证该文件的哈希值
  4. APP1生成一个新的哈希...基本上回到第1步

这样,哈希永远不会被重用,只有APP1和APP2知道当前的哈希值。

如果系统没有相同的后端,另一种方法是根据两个应用程序都知道的一些秘密周期性地生成新的哈希值:sha256(SECRET + current_time_window),类似于2因子身份验证。

要添加的附注是,如果您使用HTTPS和POST请求,则旁观者无法读取参数。

© www.soinside.com 2019 - 2024. All rights reserved.