【问题标题】:How to securely store webhook url in c#如何在 c# 中安全地存储 webhook url
【发布时间】:2020-01-13 19:36:37
【问题描述】:

在我正在创建的 c# 程序中,我想将人们给出的答案(该程序是一个测验)发送到可以存储它们的 webhook。我怎么做才能让如果有人打开 program.cs 他们看不到网络钩子是什么?为此,我在 python 中使用 base64。

【问题讨论】:

  • 也许您可以只使用公共 URL,但在 Webhook 验证的请求标头中传递一个秘密令牌。确保不要对令牌进行硬编码或以纯文本形式存储,而是存储在受 DPAPI 保护的文件中。
  • 如果他们可以打开 program.cs,他们可能也可以调试您的代码并获得价值,不是吗?

标签: c# encryption base64 webhooks url-obsfucation


【解决方案1】:

首先,如果您使用 Base64 进行某种加密/混淆,那么您在某处存在巨大的安全漏洞,需要紧急注意...读取 Base64 编码字符串所需的唯一事情就是解码它。

其次,您要查找的是通常所说的“应用程序机密”或“环境变量”;这些是通常在运行时分配/初始化的值。您应该使用某种app setting

但即便如此,由于这是客户端,因此 URL 不会被“混淆”,如果他们能够反汇编程序或应用程序,他们将能够在反汇编代码中找到秘密。

您可以使用非机密/公共 URL,然后将请求转发到机密 URL(这将是最安全的方法,因为这是客户端无法在没有访问权限的情况下访问基础 URL 的唯一方法到服务器)。

然而,最终,如果一个端点非常敏感以至于您必须对其保密,那么您可能不应该让客户端直接向它发送数据。

【讨论】:

  • 这不也行不通吗?因为如果公共 url 转发给它,那么他们可以使用公共 url 向 webhook 发送请求
  • @TwistedNight,是的,他们当然可以。您必须接受这样一个事实,即您无法真正对请求保密。有动力的用户总能弄清楚客户端发生了什么(并因此复制它所做的)。
  • @TwistedNight 不是真的。我的意思是,如果您实际上只是使用 HTTP 语义来转发请求,那么他们肯定会知道,如果您通过服务传递请求(即,您发布到服务 A,服务 A 发布您发布到服务 B 的内容,服务 B 响应服务 A,服务 A 响应您)如果不监听来自服务 A 的网络流量,就无法知道服务 B 是什么,我会说是相当安全的.. 大多数恶意用户不会离服务器足够近来执行此操作。
猜你喜欢
  • 2014-06-24
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多