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安全表也很好。
始终使用 SSL 来防止某些中间人攻击。否则,嗅探连接的人(如果通过公共 Wi-Fi 或公司网络连接,这是一个巨大的风险)可以看到用户名和密码。
不要在每个请求上发送用户名和密码,而是实施 oAuth2,在这种情况下,您的客户端只需发送用户名和密码一次,然后对于其他请求,您只需发送身份验证密钥。实现 oauth 服务器的良好文档:http://www.sitepoint.com/creating-a-php-oauth-server/
查看此文档:https ://www.owasp.org/index.php/REST_Security_Cheat_Sheet
归档时间: |
|
查看次数: |
5424 次 |
最近记录: |