Twitter API-验证Twitter实际上是Twitter

Twitter API-验证Twitter实际上是Twitter,api,twitter,signature,Api,Twitter,Signature,我一直在研究各种API,因为twitter似乎是一个常见的讨论点,所以我将以它为例 很多API都在执行OAuthTo,这对于允许服务认证和授权连接到它的应用程序来说是非常好的,然而,从我所看到的,似乎没有一种方法来验证推特实际上是推特(而不是中间人攻击)。我希望看到响应体的某种签名(使用共享/公钥),我可以用它来验证twitter是否对其进行了签名 这是因为目前没有一个真正的人在Twitter推特中间攻击,因为目前最坏的情况是什么(为什么有人要给我无效的推文)< /P> 在这一点上,如果你要签署

我一直在研究各种API,因为twitter似乎是一个常见的讨论点,所以我将以它为例

很多API都在执行OAuthTo,这对于允许服务认证和授权连接到它的应用程序来说是非常好的,然而,从我所看到的,似乎没有一种方法来验证推特实际上是推特(而不是中间人攻击)。我希望看到响应体的某种签名(使用共享/公钥),我可以用它来验证twitter是否对其进行了签名

这是因为目前没有一个真正的人在Twitter推特中间攻击,因为目前最坏的情况是什么(为什么有人要给我无效的推文)< /P>


在这一点上,如果你要签署回复,你会使用什么方法?我目前正在考虑使用共享密钥对响应体进行HMAC-SHA1签名。

这就是SSL的“信任”部分所做的

--编辑


我注意到这一点被否决了,但重要的是其他读者意识到这是由于个人的分歧,而不是由于不正确。

在.NET世界中,我们使用WCF,它有许多不同的安全模型,包括对每条消息/响应进行签名(以及如果需要加密)。这增加了不少开销,但可以让您对安全模型更加“信任”。如果需要,可以切换到使用二进制序列化数据来减少膨胀和消息大小


我不确定其他Web服务API在该领域提供了什么,但我确信其他人可以根据需要添加更多详细信息。

应该已经指定-我知道可以使用SSL进行传输安全,但当数据不敏感时,似乎会有很多开销……如果数据不敏感,为什么您关心它来自何处?如果你在意的话,你怎么知道一旦你确认数据不是从其他地方发送的,或者没有被修改过?仅仅因为它不敏感并不意味着我不想验证数据源,有些数据只是不“保密”,不在乎是谁截取的,而是想验证它是否来自正确的来源。例如,天气数据,不管是谁在路上读的,但是如果我用这些信息来决定是否应该自动打开暖气,我想知道它来自正确的来源。至于如何验证它,根据问题,通过某种签名,因为如果您更改数据,签名将不再有效;您经常收到数据,正如我在下面所说的,除非您停留在验证通道中,否则您无法知道数据来自源。@silky,您能向我解释一下为什么验证只工作一次吗?如果您对每个响应进行签名,并且只能使用私钥进行签名,那么您就知道它来自该源。还是我遗漏了什么?SSL似乎有很大的开销——特别是对于接收数十万个请求的服务来说……正如我在你帖子的评论中所暗示的那样;如果您不验证它并使用SSL,即使您通过某种方案检查它是否是您认为的第一个,如果连接没有受到保护,不受更改(即SSL),也无所谓;你不能相信你所得到的。你的底线是显而易见的:要么你接受SSL的延迟,要么你接受你不知道数据来自哪里。@silky,我想我们在这里看到两件不同的事情,我想验证消息,你似乎想验证传输机制,即如果你对每条消息签名,你可以打印它,通过电子邮件发送它,使用UDP做任何你想做的事情,它的完整性总是可以维护的。我指的是每封邮件的签名方案,而不是一次性传输级方案。(也就是说,我指的是HMAC-SH1哈希或类似的)RM:不,我们没有,很抱歉,你只是不明白你想做什么。我将让其他人来解释,因为无论出于何种原因,似乎在交流中存在一个普遍的问题。@RM,我同意你的看法-你在谈论两件不同的事情。SSL用于加密,您已经明确表示不需要加密。我说HMAC-SHA1对于你想要实现的目标来说是一个不错的选择。是的,这就是我的意思(签名,而不是加密),但是对于标准的REST或POX服务,比如Twitter。