【发布时间】:2015-07-30 17:48:01
【问题描述】:
关于使用 PHP/MYSQL 的 API 密钥的快速问题。在过去的几天里,我读了很多书,但只需要进一步澄清和一些最佳实践指南,因为我对 HTML、JS、JQUERY、PHP / MYSQL 还很陌生。
我的服务器端代码是 PHP,它连接到 MYSQL 数据库。该数据库有一个users 表,它将存储诸如id、username、password(通过PHP5 使用password_hash(),因此它不存储明文值)和api_key 等列。我还将考虑添加一些诸如last_seen 和last_login 以提高安全性。
我希望使用 API 密钥对用户进行身份验证以访问服务器上的资源(例如 parseID.php,它采用 POST 参数来返回用户输入的 ID 上的 JSON 结果)。如果需要,用户也可以在脚本中使用此 API 密钥来访问 JSON 输出。
我的思考过程是:
- 已登录的用户单击按钮以生成 API 密钥。
- 脚本生成一个 API 密钥(使用 password_hash())并将其保存在数据库中的用户 ID 中
- 当用户想要访问受保护的资源时,他们将在 GET/POST 中提供给定的 API 密钥(或存储在会话中??),这将尝试将其与数据库中的密钥进行匹配并返回结果(授权与非授权)。
- 如果经过身份验证,用户就可以访问资源。
我还将使用 SSL 来加密用户/资源之间的流量。
我有点不清楚,想知道这里可以采取哪些其他步骤/最佳做法来确保 API 密钥和用户信息的安全?
我在这里和谷歌上搜索的所有信息都是几年前的,并且使用诸如 MD5 之类的做法来加密密钥。
谢谢!
【问题讨论】: