【问题标题】:Securely Sending PHP Get Information from iOS从 iOS 安全发送 PHP 获取信息
【发布时间】:2015-05-18 07:30:51
【问题描述】:

所以情况就是这样,我有一个 iOS 应用程序,其中有一部分用户将信息输入到特定标签中,然后我根据用户提供的信息创建一个 URL 请求,并将其发送到我的 PHP 后端。 URL 遵循以下结构:

http://www.somewebsite.com/send.php?title=hello&name=john&contact=email

现在上面的问题是,任何可以访问该 URL 的人,都可以很容易地用垃圾邮件、过多的提交等轰炸数据库。感觉很不安全。我应该如何使这个过程尽可能安全?

我目前的 PHP 知识水平能够通过简单地使用“完成工作”的方法来完成任务(不管它们有多安全),但现在我开始达到我需要的程度牢记安全,安全等。非常感谢有用的建议/见解。谢谢!

【问题讨论】:

标签: php ios security


【解决方案1】:

确保这一点的最佳方法是将您的服务器端组件(即 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(TLSv1.2 和 PFS)。 独家。 甚至没有一个端口 80 的 HTTP 服务器除了重定向到您的 HTTPS 服务器之外做任何事情。如果 iOS 支持,还发送 HSTSHPKP 标头。

如果您需要比 HTTPS + OAuth2 提供的更好的安全性,我建议全职 learning application security,因为只有在您对该主题有广泛的了解时,更详细和复杂的解决方案才有意义。 (当然取决于你的threat model!)

例如,防御攻击者对您的应用进行逆向工程以恢复硬编码 API 密钥的方法就是不拥有它们,这会使您的工作流程复杂化,并且可能需要对每个用户进行身份验证。

【讨论】:

  • 很好的建议,但学习安全性是一个很大的话题。如果 OP 想要真正的安全性,请聘请领域专家。如果 OP 只对安全性的外观感兴趣--canry-on。
  • 非常感谢您提供的信息。 PHP 安全性现在开始出现非常深入的范围。你上面概述的内容对于我的目的来说绰绰有余。很久以后,我需要研究一些更高级的主题。谢谢。
  • @zaph 当然,但我相信让安全教育更容易获得对社会来说是一件好事。 (如果有人想聘请领域专家,我当然可以通过my company 联系我!:P)
  • @Vimzy 不客气。如果您在该回购或我的回答中遇到任何问题,请随时在 Twitter 上通过电子邮件等方式联系我。 :)
  • @ScottArciszewski 我同意教育!就个人而言,我喜欢 H. X. Mel 的 Cryptography Decrypted。你会见到爱丽丝、鲍勃和夏娃。 ;-)
【解决方案2】:

在您的参数上添加用户名/密码和密钥。制作您自己的组合(如果可能,请加密),然后始终先检查它,以便将过程最小化。

如果错误的凭据停止该过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2011-07-19
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多