3

我正在使用 PhoneGap 开发一个移动应用程序,它将通过 ajax 请求与服务器(PHP)进行通信。

在服务器端(PHP) 像https://example.com/retrieveData.php这样的东西 将通过获取用户 ID$_POST['user_id']并以 JSON 形式返回有关用户的一些敏感信息。

在客户端(PhoneGap-Javascript),JSON 输出将被解析并在应用程序中使用。

我担心的是,如果有人窃取了这个 url ( https://example.com/retrieveData.php ),他可以手动发送虚​​假的 post 请求并且可以窃取返回的用户信息吗?

我怎样才能保护这种通信?

4

3 回答 3

3

我担心的是,如果有人窃取了这个 url ( https://example.com/retrieveData.php ),他可以手动发送虚​​假的 post 请求并且可以窃取返回的用户信息吗?

你的担心是对的。除非您检查授权请求的请求的某些部分,否则任何人都可以向该 URL 发送消息并获得结果。

例如,您可以进行身份​​验证以检查请求是否来自用户,然后根据用户应该有权访问该信息的想法授权请求。

或者,您可以根据只有有效请求者才能通过共享机密知道的内容进行授权,并依靠https该 URL 的一部分来防止共享机密公开。您将秘密提供给受信任的合作伙伴,当您通过 PHP(也通过 HTTPS 保护)生成 Web 表单时,您会包含一个包含共享秘密的隐藏输入。这就是XSRF保护通常的工作方式。

你应该考虑以下几点:

  1. 谁应该能够合法地访问此页面?通过您的手机应用程序进行交互的登录用户、可以保护秘密的合作伙伴、Web API 用户?
  2. 他们有什么凭据可以使用您服务器的其他部分?登录cookies?XSRF 代币?合作伙伴代币?
  3. 您的应用程序的哪些部分仅通过安全通道发送,例如https

如果 (2) 中的某些凭据子集满足所有 (1) 的要求,并且这些凭据仅通过 (3) 发送,那么您只需在页面中检查 (2)。否则,您需要重新设计您的应用程序架构,直到实现这一点。

OWASP 有一个授权指南可能会派上用场,他们也有许多关于审查授权代码的页面,但大多数示例都不是 PHP 特定的。

于 2012-10-01T20:43:12.963 回答
1

当然,他可以发送他想要的任何帖子请求。解决此问题的唯一可能方法是使用服务器知道的身份验证,即客户端必须向您发送一些难以猜测的内容,然后在服务器中启动会话。

于 2012-10-01T20:37:23.540 回答
0

正如其他答案所暗示的,以下是使您的网络应用程序更安全的策略:-

  • 最基本的规则,使用安全协议(https)
  • 通过用户名和密码验证您的用户
  • 您的应用程序的大多数功能/操作主要必须要求用户通过身份验证。
  • 除了身份验证,维护您的应用程序的访问控制列表,它决定每个用户角色拥有的权限(假设您将用户划分为不同的角色)。在代表用户执行任何操作之前,请检查用户是否有权这样做。
  • 不要只依赖客户端验证。也在服务器端执行验证。
  • 将 csrf_tokens 与您的响应以及会话 cookie 一起发送。
  • 切勿在 cookie 中发送任何机密信息。

希望能帮助到你。

于 2015-12-15T06:24:07.870 回答