所以情况就是这样,我有一个iOS应用程序,其中有一个用户将信息输入特定标签的部分,然后我根据用户给定的信息创建一个URL请求,并将其发送到我的PHP后端。 URL遵循以下结构:
http://www.somewebsite.com/send.php?title=hello&name=john&contact=email
现在上面的问题是,任何有权访问该网址的人都可以轻易地用垃圾邮件轰炸数据库,提交的内容太多等等。感觉非常不安全。我的方法应该如何使这个过程尽可能安全?
我目前对PHP的知识水平能够通过简单地使用“完成工作”的方法(无论它们有多安全)来完成任务,但现在我开始达到我需要的程度牢记安全,安全等。非常感谢有用的建议/见解。谢谢!
答案 0 :(得分:3)
确保这一点的最佳方法是将服务器端组件(即PHP部分)锁定在OAuth2身份验证层之后。我个人推荐this 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 (带有PFS的TLSv1.2)。 独家。甚至没有端口80 HTTP服务器可以执行任何操作而不是重定向到您的HTTPS服务器。如果iOS支持,也请发送HSTS和HPKP标头。
如果您需要比HTTPS + OAuth2提供更好的安全性,我建议learning application security全职,因为如果您对该主题有广泛的知识,那么更详细和复杂的解决方案才有意义。 (当然,取决于您的threat model!)
例如,针对攻击者反向设计应用程序以恢复硬编码API密钥的防范根本就没有它们,这会使您的工作流程变得复杂,并且可能需要对每个用户进行身份验证。
答案 1 :(得分:-2)
在参数上添加用户名/密码并输入密钥。制作您自己的组合(如果可能,加密),然后始终先检查它,以便最小化该过程。
如果凭据错误停止了该过程。