如何保护基于php的webservice

JFV*_*des 5 php security https web-services oauth

我正在开发一个Android应用程序,我正在创建一个基于PHP的Web服务来从数据库中检索信息.

问题是我真的不知道如何保证这项服务.

例如,如果我的Android应用程序需要从服务器检索一些信息,它将调用http://mywebservice.com/service.php,它将发送几个POST参数作为用户和密码登录,或类似的,为例如,一个用户ID来检索他的数据.

当然,任何具有足够知识的人也能够检索这些数据.这就是我不想发生的事情.

任何知道要发送到我的服务器的参数的人都可以从中检索信息.

我怎样才能确保这一点?

我一直在阅读关于OAuth,OAuth2,它的两条腿和三条腿实现,https ..

但此刻,我真的不知道如何确保这一点.

我希望webservice只回答我的应用程序而不是其他任何人.

PS:即使有像http://myservice.com/get_information.php这样的东西,你发送一个id,你可以检索很多信息.当然,我控制在我的应用程序中,只有已登录和授权的人可以进行该调用,但无论如何这都是一个问题.做这种事的最好方法是什么?

小智 6

保护Web服务的一些概念(可能会忘记一些概念):

  • 协议:在当前情况下为HTTPS,因此不会以明文格式传输数据。

  • 会话:会话具有生存期,唯一标识符(会话令牌/ ID /其他),并且包含错​​误代码。当用户调用您的Web服务时,将创建一个会话并返回其令牌。在每次调用Web服务时,您都将测试会话是否仍然存在。您可以为预期的输入,输出和交换增加复杂性。error_code将用于记录日志(错误可能来自网络服务的攻击或错误)。

  • 数据加密:使用非对称函数,例如password_hash()或crypt()来解决身份验证问题。对需要检索的敏感数据使用AES 128(10轮)或256(14轮)等对称算法。

  • 测试输入:如果您发现自己在查询中插入了给定的参数,请尝试防止SQL注入。一些头脑不好的人也可以尝试发送参数,这会使您的Web服务失败。

  • 追求标准:正如Çagatay所说,尝试实现例如oAuth2,因为大多数时候标准比我们将构建的要好得多:

希望能帮助到你。

编辑:REST安全表也很好。


Çağ*_*ürk 4

  1. 始终使用 SSL 来防止某些中间人攻击。否则,嗅探连接的人(如果通过公共 Wi-Fi 或公司网络连接,这是一个巨大的风险)可以看到用户名和密码。

  2. 不要在每个请求上发送用户名和密码,而是实施 oAuth2,在这种情况下,您的客户端只需发送用户名和密码一次,然后对于其他请求,您只需发送身份验证密钥。实现 oauth 服务器的良好文档:http://www.sitepoint.com/creating-a-php-oauth-server/

  3. 查看此文档:https ://www.owasp.org/index.php/REST_Security_Cheat_Sheet