【问题标题】:Validating a JSON response from web server验证来自 Web 服务器的 JSON 响应
【发布时间】:2020-09-22 06:19:19
【问题描述】:

我目前正在使用 Invision 论坛来托管我的网站,

我们正在使用他们的 API 密钥来提取用户数据并通过我们的启动器登录。

我注意到返回到我们的启动器的所有信息都在计划文本 (JSON) 中。这使得某人很容易将我们的流量重定向到启动器并插入一个虚假的 json 文件。

简而言之,破解启动器/登录系统。

我需要知道是否可以调用任何验证方法,以确保信息是从我的主机发送的,而不是从中间的另一个人发送的。

该网站是 HTTPS。

谢谢。

【问题讨论】:

  • 如果对 API 的请求(返回 JSON 的地方)也使用 HTTPS,并且是在服务器端完成的,那么任何人都应该很难进行 MITM 攻击。我们必须看到代码和网络架构的更多细节
  • @Adyson,我可以确认我们的主机正在运行 HTTPS。在我们这边,我们通过 RestSharp 库进行调用 - 但问题是,当我们通过网站的 url 调用 GET 时,信息以计划文本的形式返回。为了解决这个问题,我们已经转移到 OAuth 而不是 API 密钥。但是我仍在努力确认返回的 json 的有效性。目前正在研究检查 SSL 证书,有什么建议吗?
  • “我们正在使用他们的 API 密钥来提取用户数据并通过我们的启动器登录”...您的意思是说您可以使用您的 API 密钥和之前访问用户的数据用户实际上已经过身份验证?如果是这样,那就是你需要解决的问题。
  • 一旦用户通过身份验证并获得了 OAuth 令牌,启动器代码应该只关心确认令牌的有效性......对 Invision API 的任何请求都应该具有用户的权限,而不是您的私有 API 密钥
  • “我可以确认我们的主机正在运行 HTTPS”...这不是我问的。我询问是否使用 HTTPS 访问 API。当您向 Invision 发出请求时,是否使用 HTTPS 完成?

标签: c# validation https invision


【解决方案1】:

好的,这里有一点背景。

1,我们使用的是云托管社区,因此我们的访问权限比 自托管网站等。

2,我们使用 c# 将 api 密钥作为参数发送,这是我如何检索用户活动购买的示例,(我将在结果上启用页面浏览选项卡,该选项卡可以访问下载链接、更新程序和启动方法程序等):

var client = new RestClient("https://HIDDEN.forumflash.com");
var request = new RestRequest("/api/nexus/purchases", DataFormat.Json);
request.AddParameter("key", "BlahBlahBlah"); // Enter in Api Key
request.AddParameter("customers", MemID); // Pass id from member request
request.AddParameter("active", 1); // Check active purchases
var response = client.Get(request);

if (response.StatusCode == HttpStatusCode.OK)
{
    dynamic resp = JObject.Parse(response.Content);
    // do stuff with object.
}

结果总是一个json字符串,我没有能力改变这个。

3,我们能够访问此信息的另一种方法是获取 oAuth 令牌, 并发送它而不是 api 密钥。我觉得这更安全,因为我们可以随时撤销任何授权令牌,以及随心所欲地更改秘密,并且令牌会每隔一小时左右过期(更改)?

但我们认为这可能还不够“足够”,并希望通过“验证”响应 DID 实际上来自服务器或服务器 IP 地址而不是某些中间人服务器来更进一步。

我一直在研究服务器证书验证,但我似乎只能找到禁用或发送它们的方法,没有隐含的验证示例(老实说,我们一直在学习,这对我们来说是一个糟糕的事情),在适当的方向上进行简单的推动就会有很大的帮助。

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 2011-02-10
    • 2013-08-08
    • 2017-04-29
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多