【问题标题】:How to secure a web service call over HTTP如何保护通过 HTTP 的 Web 服务调用
【发布时间】:2014-02-13 12:52:48
【问题描述】:

通过 HTTP 通信通道保护 Web 服务调用的最佳实践是什么?

我的目标是在查询字符串中使用额外的参数来生成限时哈希值(由客户端计算生成)来定义发送请求是有效的。这将被服务器端应用程序理解如何知道客户端算法。但是这种方式在反编译客户端应用程序时也有风险!

那么最好的方法是什么?我正在寻找一种动态算法,有什么想法吗?

【问题讨论】:

  • 您通过什么来保护您的数据?例如来自未使用客户端应用程序的其他人,或来自您应用程序的恶意用户。
  • 是的,目的是保护应用程序的恶意用户,所以我不希望另一个发件人(应用程序等)在另一个时间使用相同的请求(url)。

标签: web-services security http hash parameters


【解决方案1】:

从您的评论看来,您需要防范“重放攻击”(有人发送相同的请求两次,而您只希望他们能够发送一次)。处理此问题的常用方法是使用随机数。在基本层面上,它是这样工作的:

1) 客户想要提出请求;在此之前,它会向服务器询问一个 nonce,这是一个不会被重用并且不应该是可预测的值(例如基于时间)。

2) 客户端从服务器获取随机数,然后发出请求,将刚刚从服务器获得的随机数发送回服务器

3) 如果客户端(或其他客户端)随后尝试发出上述步骤 2 中已经发出的请求,服务器将不会接受它,因为它包含一个已被服务器标记为“已使用”的随机数。”

这有点过于简单化了,但这就是随机数防止重放攻击的方式。

注意:“nonce”来自“number used once”。但 nonce 实际上不需要是数字。

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 2014-03-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2023-03-25
    相关资源
    最近更新 更多