防止API客户端泄露敏感数据

时间:2018-04-15 07:22:45

标签: c# api security communication

假设我有一个API端点,例如Facebook Graph API,我设计了一个在我的PC上运行的应用程序,以定期连接到API并检索我的帖子,评论等。在每个Timer_Tick上,程序重新连接到API和从API中获取前10个数据项,并将这些数据保存到数据库中。

现在,假设这个应用程序是由第三方构建的,我刚从互联网上下载为二进制文件而不是开源。

我怎么知道应用程序是否在我不知情的情况下将我的Facebook数据泄露给第三方?

是否有监控此类泄漏的机制? (从程序角度来看)

1 个答案:

答案 0 :(得分:0)

这是一个安全问题,并确保您几乎必须考虑此处的任何漏洞,并尝试确保无法通过已知漏洞披露数据,但您无法确定未知漏洞。 如果这是信任问题并且您正在处理敏感数据,我强烈建议您避免使用第三方工具,除非它们由API提供商提供或认证。这里有一些技巧可以帮助你了解后院的情况,但他们肯定不会保证安全

1-首先确保应用程序确实是二进制代码(我知道你提到它是二进制代码),因为一些可执行文件只是脚本或半脚本,但看起来像二进制文件文件。例如,在某些情况下,如果可执行应用程序的源代码是用C#,Python,Java编写的,那么有一些工具可以帮助您对应用程序进行DeComplie并找出其中的内容。如果例如代码被混淆或者涉及复杂的模型或OO编程模型,那么这个解决方案当然会非常困难。

2-使用WireShark等网络监控工具或任何其他工具在使用第三方应用程序时捕获所有HTTP / HTTPS请求流量。因为API与应用程序用于交换数据的HTTP请求相同,您可以使用这些工具来监控计算机中发生的情况。通常,此应用程序必须仅连接到使用Web API所需的Facebook服务器和URL,如果从Facebook以外的服务器发送或接收任何其他请求,则此处可能存在数据泄漏。如果SSL/TLS未对这些请求进行加密,您将能够看到正在交换的数据,或者是否通过SSL/TLS加密,有些工具可以提供man in the middle攻击解决方案来查看这些流量但如果它们在应用程序层中被加密,那么您将无法看到正在传输的数据,因此可能会涉及对数据的怀疑甚至更高的数据泄漏机会。不要忘记必须在应用程序的整个使用周期内扩展此监控。

同样限制应用程序仅与服务器通信操作系统防火墙的服务器进行通信,这样可以减少数据泄漏的可能性。