web-services - 保护 Web 服务以防止篡改交换的数据和模拟应用程序请求

标签 web-services security

我正在使用客户端 API 库构建网络服务。我如何帮助使用客户端 API 库的开发人员防止最终用户修改客户端应用程序和 Web 服务之间交换的数据?

另外,我如何确保请求来自应用程序,而不是由直接调用服务的最终用户模拟?

我知道这里实现的任何安全措施都会有变通办法,所以问题不是如何使其防篡改而是防篡改。

最佳答案

你真的不能。

您要做的是加密您的有效载荷。加密有效载荷可确保中间人无法篡改它,并且有效载荷是由具有适当 key 的人创建的。为此,您需要获得一把 key 。要获得 key ,您需要将它嵌入到您的程序中,或者从服务器请求它。如果将它嵌入到程序中,任何拥有该程序的人都可以访问它。如果您从服务器请求它,那么您需要一些工件来识别发送给程序的正确 key ——它本身实际上是某种 key 。

加密流量会阻碍大多数人。问题是它不会阻碍所有人,坚持不懈的人会以一种形式发布他们的信息,让那些最初不愿意做这项工作的人更容易。

这就是为什么它归结为您要保护的内容。

例如,如果您正在玩一款得分游戏,并且如果您获得了足够的积分,那么您将赢得很高的声望,或者同样糟糕的是,您将获得金钱/奖品,那么就有适当的动机来作弊并绕过安全措施。如果用户通过作弊获得了任何重要的奖励,那么不仅有人会作弊,他们还会促使其他人作弊。

这就是为什么“默默无闻的安全性”不起作用的原因。这一切都集中在那些试图破坏安全的人的动机上,而安全一旦被曾经老练的分析师破坏,然后突然间,“每个人”都知道了。

想想最近的 Sony Playstation 黑客攻击。该系统非常安全,但是有人以某种方式发现了允许经过 um 修改的系统运行软件的签名 key 。当这些签名 key 是安全的时,“破解”PlayStation 所需的负担级别涉及硬件修改等。

现在他们不需要任何东西。这是一个下载。现在整个 PS 社区都不受信任。那只猫已经不在了。

类似的事情也发生在 TI 计算器上,有人对签名 key 进行了逆向工程,破坏了整个平台。这只是计算器极客。

这些只是极端情况,一旦安全性被破坏,您的协议(protocol)可能会发生什么。因此,重要的是首先要了解驱动器是什么来破解您的解决方案,然后尝试通过一些其他方式来缓解它,在这些方式中,它们的有效负载和加密对它们的成功不太重要。

关于web-services - 保护 Web 服务以防止篡改交换的数据和模拟应用程序请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311359/

相关文章:

web-services - ADBException : Unexpected subelement

c# - 无法公开地址处的 WCF 端点

c# - WCF 不反序列化。为什么我的参数是 NULL?

javascript - 用于监听我自己的网络服务的推送通知的 Cordova 插件

jquery - JAX-WS:如何使 SOAP 响应返回 HashMap 对象

linux - 使用 Git 存储密码有多安全?

security - 防止输入处理不当攻击的 Tomcat 虚拟主机

java - Spring boot,如何重新配置​​http-security

php - 这种登录方式安全吗

ios - 如何在 ios 钥匙串(keychain)中手动存储?