将POST请求从一个应用程序授权给其他应用程序

时间:2014-08-27 07:19:04

标签: php security web csrf-protection

我有两个需要在它们之间传递数据的Web应用程序,例如,当在应用程序A 中添加员工时,我发出 CURL请求/ POST请求**并传递一些员工数据并将其存储在**应用程序B

功能正常,现在我想使请求流安全,这两个应用程序,即应用程序A和应用程序B在两个不同的WebServers上构建在不同的技术上。一个用PHP和其他用Java。

因此,当在PHP中添加记录时,我发送CURL请求并在java中保存数据。 **The PHP application is built for distribution which would be sent to the end users.**

我如何确保发送的POST请求是安全的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

我如何确保我发送的POST请求是安全的。

嗯,答案取决于。您想让谁安全地提出要求?你担心什么样的攻击?我将在这里介绍几个可能的向量:

最终用户

无法防止最终用户攻击您的系统。

鉴于您正在向他们分发应用程序,并且他们控制着网络堆栈,实际上不可能100%防止用户做出恶意的事情。

你可以对源进行模糊处理,并做各种各样的技巧以使其变得更难,但最终如果用户拥有该程序,并且它在硬件上运行,他们可以用它做他们想做的事情。包括尝试从应用程序中提取加密或身份验证密钥。

外部攻击者

要防止外部攻击者无法访问任何一个系统,可以采取一些步骤。

  1. 使用SSL进行通信。

    这会加密流量,以便攻击者无法查看或修改传输中的数据。

  2. 使用certificate pinning

    在您发送到客户端的应用程序中,包括您用于服务器的证书的副本。这样,您就可以检测到试图伪装成服务器的攻击者(通过DNS欺骗或其他攻击)。

  3. 验证SSL对等方。

    这会强制CURL检查证书以确保它们匹配。

  4. 使用安全加密技术验证客户端

    生成公钥/私钥对。将私钥存储在客户端上,将公钥存储在服务器上。

    发出请求时,请使用私钥(请求时间)对其进行签名。

    在服务器上,当您收到请求时,请验证请求时间是否大于上次查看的请求(以防止重放攻击)。然后使用私钥验证签名,然后将请求时间存储为最后看到的请求。

  5. 不要滚动你自己的加密。它无济于事。通过Obscurity进行安全并非安全。至少在它涉及加密时......

答案 1 :(得分:0)

以下是可能导致安全数据传输过度的一些要点:

  • 使用SSL请求会很有帮助。
  • 使用仅为应用程序所知的应用令牌。因此,在接收和发送数据时,您需要验证该令牌。
  • 如果不想使用SSL,请尝试使用应用程序已知的某种机制进行加密数据传输。
  • 您自己的加密算法解密请求及其参数,只有接收,发送应用程序才会知道。
  • 更多..