Ajax发布请求安全性

时间:2012-10-01 20:34:54

标签: php ajax json security

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

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

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

我担心的是,如果有人窃取此网址(https://example.com/retrieveData.php),他可以手动发送虚​​假的帖子请求并窃取返回的用户信息吗?

如何确保此通讯安全?

3 个答案:

答案 0 :(得分:3)

  

我担心的是,如果有人窃取此网址(https://example.com/retrieveData.php),他可以手动发送虚​​假的帖子请求并窃取返回的用户信息吗?

你是对的。任何人都可以向该网址发送消息,并获得结果,除非您检查authorizes请求的请求的某些部分。

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

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

您应该考虑以下事项:

  1. 谁应该合法地能够访问此页面?登录用户通过您的手机应用程序进行交互,合作伙伴可以保护秘密的Web API用户吗?
  2. 他们使用服务器的其他部分有哪些凭据?登录cookie? XSRF代币?合作伙伴令牌?
  3. 您的应用的哪些部分仅通过https等安全渠道发送?
  4. 如果(2)中的某些凭证满足(1)的所有(1)并且这些凭证仅通过(3)发送,那么您只需要在页面中检查(2)。否则,您需要重新设计应用程序架构,直到确实如此。

    OWASP有一个Guide to Authorization可能派上用场,他们在查看授权代码时也有很多页面,但大多数示例都不是特定于PHP的。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

希望它有所帮助。