我有两个需要在它们之间传递数据的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请求是安全的。有什么想法吗?
答案 0 :(得分:1)
我如何确保我发送的POST请求是安全的。
嗯,答案取决于。您想让谁安全地提出要求?你担心什么样的攻击?我将在这里介绍几个可能的向量:
无法防止最终用户攻击您的系统。
鉴于您正在向他们分发应用程序,并且他们控制着网络堆栈,实际上不可能100%防止用户做出恶意的事情。
你可以对源进行模糊处理,并做各种各样的技巧以使其变得更难,但最终如果用户拥有该程序,并且它在硬件上运行,他们可以用它做他们想做的事情。包括尝试从应用程序中提取加密或身份验证密钥。
要防止外部攻击者无法访问任何一个系统,可以采取一些步骤。
使用SSL进行通信。
这会加密流量,以便攻击者无法查看或修改传输中的数据。
在您发送到客户端的应用程序中,包括您用于服务器的证书的副本。这样,您就可以检测到试图伪装成服务器的攻击者(通过DNS欺骗或其他攻击)。
验证SSL对等方。
这会强制CURL检查证书以确保它们匹配。
使用安全加密技术验证客户端
生成公钥/私钥对。将私钥存储在客户端上,将公钥存储在服务器上。
发出请求时,请使用私钥(请求时间)对其进行签名。
在服务器上,当您收到请求时,请验证请求时间是否大于上次查看的请求(以防止重放攻击)。然后使用私钥验证签名,然后将请求时间存储为最后看到的请求。
不要滚动你自己的加密。它无济于事。通过Obscurity进行安全并非安全。至少在它涉及加密时......
答案 1 :(得分:0)
以下是可能导致安全数据传输过度的一些要点: