解决此问题的最佳方法是设置一个 API 以与服务器上的数据库进行交互,而您的 iPhone 应用程序只需查询 API 并以机器可读格式返回数据,例如JSON
,请参阅http://en.wikipedia.org /wiki/JSON和http://json.org/。因此,对于用户登录,服务器可能会返回如下内容:
{
"result": false,
"error": "Invalid username or password"
}
这将由 PHP 使用以下代码生成:
echo json_encode(array(
"result" => false,
"error" => "Invalid username or password"
));
另请注意,您应该结合使用HTTP 响应代码,例如 401 表示未经授权。
JSON 可以在其格式中使用布尔值和其他数据结构。几乎所有主要语言都有它的支持/库。
这样做的好处是它允许您使用相同的 API 构建其他应用程序,例如 android 版本或实际网站。
这个SO问题是移动应用程序安全性的一个很好的起点:
为移动应用程序创建 API - 身份验证和授权
要点是确保使用HTTPS。通过用户凭据发送时,您可以返回一个用户令牌(api 密钥),该令牌可用于未来的请求并存储在 iPhone 应用程序中以供将来访问。
例如:https://iphoneapp.com/notifications.json?key=98fy92473r92hAAIYEFG397qbqwiuUEAF
您的密钥应该在 HTTP 标头或 POST 中发送,因此它不会记录在日志等中......
注意:这只是在键盘上键入的随机字符串。
如果密钥被泄露,此方法允许您删除/重新生成密钥。您还可以对按键和各种其他参数设置速率限制。
另一个巨大的好处是通过构建您自己的应用程序使用的 API,这意味着它将保持高标准,并且其他第三方公司也可以使用该 API(如果您允许的话)。
编辑:此外,假设我需要创建一个应用程序登录页面......我有一个带有用户名和密码的 MySQL 数据库(显然是散列的)。使用 $_GET 变量来查看它们是否经过身份验证是否安全。例如:
https ://somewebsite.com/checkauth.php?username=test&password=C3LyiJvTCQ14Q
您应该改用 POST 发送敏感数据,但任何服务都必须在某个时候登录。使用 HTTPS 应该最有帮助,因为它可以防止窃听。第一次身份验证后,您可以返回令牌并获得上述好处。
至于用户登录以及您的 PHP 符合良好实践,您应该没有问题。请参阅http://www.phptherightway.com/如果您有任何问题,它会很有帮助。
如果可以/想要的话,一定要研究 OAuth 并利用它。
这只是一个起点,并不意味着逐字逐句使用,需要进一步阅读和谷歌搜索。