我已经在Stack上搜索了一下这个,但是我找不到https的确定答案,只是针对那些在某种程度上包含http或未加密参数的解决方案,而这些参数在我的情况下并不存在。
我开发了一个iOS应用程序,通过Apache HTTPS POSTS和php与MySQL通信。
现在,服务器使用有效证书运行,仅对端口443上的流量开放,所有帖子都完成https://thedomain.net/obscurefolder/obscurefile.php
如果有人知道要发布的正确参数,那么世界上任何地方的任何人都可能完全搞乱数据库,所以问题是:这种方法是否安全?让我们知道没有人可以访问源代码,并且运行该软件的iPad都没有被越狱或以其他方式受到攻击。
编辑以回答答案: 有几个php文件,它们只支持一个特定的操作,并依赖于非常严格的输入格式和正确的许可证密钥(在每个查询中由SQL检索)。他们根本不回应输入,除非它100%正确并且包含适当的许可证(例如密码)。如上所述,如果输入正确,则没有实际网站,只有响应POST的php文件。网络服务器已被第三方安全公司扫描,并且不包含任何已知漏洞。
答案 0 :(得分:2)
加密是必要的,但不足以保证安全。除了加密连接之外,还有许多其他注意事项。使用服务器端证书,您可以确认服务器的身份,但您不能(正如您所发现的那样)确认客户端的身份(至少没有客户端证书,这些证书非常难以通过他们在客户身上的优点。)
听起来您需要采取其他措施来防止滥用行为,例如:
只支持数据库上一个理智,有限,定义明确的操作集(不是将任意SQL输入传递给您的数据库,而是拥有一个清晰的,小的URL处理程序列表,对该数据库执行特定的,合理的操作数据库)。
验证处理程序的输入是否合理且在允许的参数范围内。
以最佳方式验证客户端应用程序(例如,使用客户端ID或其他令牌),以基于每个客户端限制功能,并检测给定客户端的异常使用模式。
对用户进行身份验证,以确保只有授权用户才能进行适当的修改。
您还应该让安全专家检查您的代码和/或雇用某人在您的网站上执行渗透测试,以了解他们可以发现哪些漏洞。
答案 1 :(得分:0)
发送POST请求并不是与服务器通信的安全方式。尽管无法访问代码或有效设备,但仍然可以通过一种开放的方式轻松访问数据库并使用它进行操作链接被发现。
我不建议使用POST。如果要从服务器发送/获取数据,可以尝试/使用其他通信方式。加密参数在这里也会有所帮助,尽管由于加密 - 解密逻辑会使代码增加一些。
您的应用通过HTTPS很好。确保应用程序在通信阶段检查证书。
您还可以在交易期间使用令牌(非设备令牌)。这可能有点复杂,但提供更多安全性。
此处的解决方案和方法很广泛。无法涵盖每种可能的解决方案。你可能想尝试一些自己的想法。虽然我建议在基本级别上进行一些加密 - 解密。
希望这有帮助。