情况是这样的,我有一个 iOS 应用程序,其中有一部分用户将信息输入到特定标签中,然后我根据用户给定的信息创建一个 URL 请求,并将其发送到我的 PHP 后端。 URL 遵循以下结构:
http://www.somewebsite.com/send.php?title=hello&name=john&contact=email
现在上面的问题是,任何有权访问该 URL 的人都可以轻松地用垃圾邮件、太多提交等轰炸数据库。感觉非常不安全。我应该采取什么方法来使这个过程尽可能安全?
我目前的 PHP 知识水平是能够通过简单地使用“完成工作”的方法来完成任务(无论它们有多安全),但现在我开始达到需要保持安全性的地步、安全等考虑。有用的建议/见解将不胜感激。谢谢你!
确保这一点的最佳方法是将服务器端组件(即 PHP 部分)锁定在 OAuth2 身份验证层后面。我个人推荐此 OAuth2 服务器 https://github.com/thephpleague/oauth2-server以此目的。
一般工作流程将是这样的:
1. Send an API key/username/password/etc to an API endpoint (i.e. a URL)
2. Get a token, store it in memory for future use
3. Send this token on subsequent requests
此解决方案优于发送数据的哈希值(例如 MD5),因为这不会验证任何内容。它还解决了根本问题而不是隐藏它(例如,POST 而不是 GET 对于保护您的通信没有任何作用)。但是,OAuth2 不提供保密。中间的人仍然可以看到/破坏你的请求。
为了更好地保护您的用户,您应该使用HTTPS(TLSv1.2 与PFS https://en.wikipedia.org/wiki/Forward_secrecy)在您的应用程序上。只。甚至没有端口 80 HTTP 服务器,除了重定向到 HTTPS 服务器之外,还没有其他功能。还送HSTS https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security and HPKP https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning标头(如果 iOS 支持的话)。
如果您需要比 HTTPS + OAuth2 提供的更好的安全性,我建议学习应用程序安全 https://github.com/paragonie/awesome-appsec全职,因为只有当您对该主题拥有广泛的知识时,更详细和复杂的解决方案才有意义。 (取决于您的威胁模型 https://en.wikipedia.org/wiki/Threat_model, 当然!)
例如,防御攻击者对您的应用程序进行逆向工程以恢复硬编码的 API 密钥的方法就是不拥有它们,这会使您的工作流程复杂化,并且可能需要对每个用户进行身份验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)