PHP - 加密其他站点的用户名和密码

标签 php session encryption passwords

我正在编写一个允许用户注册的 PHP 站点,注册用户和未注册用户都可以输入各自的用户名和密码(例如 smith8h4ft - j9hsbnuio)学校网站。

然后,我的 PHP 脚本发送一些 $_POST 变量,下载并解析标记页面,生成一个名为: marksDB = Array("subject"=> Array("A", "B", "A", "C"), ...),并重新格式化。

我的问题是: 我应该如何保证用户名和密码的安全?

对于未注册的用户,我目前忘记了用户名和密码并将marksDB 放入$_SESSION。当用户不活动时,例如30 分钟,marksDB 被删除。 $_SESSION 中的这些数据有多安全?如果用户登录后查看页面一次,就再也不会查看它,那么脚本不会从 session 中删除 marksDB 呢? session 是否自动删除 ( gc.maxlifetime )?

那么注册用户呢?我想让一切都安全,但我不想每 30 分钟不活动就用密码提示来烦扰用户。像描述的那样加密凭据是否安全 here ,但没有第三个用户设置密码?还是我必须每次都询问用户的密码?

编辑:

感谢您的快速回复,
@Justin ᚅᚔᚈᚄᚒᚔ:我怀疑他们有一些 API,但我可以问他们,以防万一
@Abid Hussain:感谢非常有用的链接。 (也感谢两位的回答)。
我会丢弃用户的凭据,只解析 markDB,我可能也会丢弃它(在注销或不活动后)——在需要时再次检索标记很便宜。

最佳答案

如果学校网站没有为此公开 API(例如,using OAuth like the StackExchange sites do),那么您的选择将受到限制。

一般来说,将用户的明文凭据保留超过绝对必要的时间绝不是一个好主意。您可以想象的任何可能的尝试方式( session 劫持、窃取 key 、解密等)都存在安全隐患。

更好的方法可能是使标记下载过程严格由用户启动。给他们一个按钮,上面写着“检索我的标记”,然后在那里完成身份验证过程,下载标记,然后丢弃他们的凭据。每次他们“同步”时,他们都应该进行身份验证。除非标记经常定期更改,否则您没有理由不能一次下载所有需要的信息,然后将其安全地缓存在服务器上供以后使用。

关于PHP - 加密其他站点的用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847830/

相关文章:

php - PHP 代码中 undefined offset 错误

php - 使用 PHP 和 Laravel 的 Paypal API

php - 使用表单保存多个 session 变量

session - 使用 ColdFusion 创建持久登录系统

security - 使用 Rfc2898DeriveBytes 从明文密码创建安全密码时盐的重要性

ssl - VPN 与 SSL - 如何保护我的传输

algorithm - 是否存在滚动 block 加密算法?

php - QuickSort:当 Pivot 交换位置时无法理解部分

php - PHP session 声明错误

php - 如何生成过去的随机日期?