我想将敏感用户信息存储在一个对象中,该对象将作为文件保存在服务器上(而不是数据库中)。
用户的密码或其他密钥将用于生成加密密钥。
只要用户登录并提供正确的密钥,就会从服务器加载数据对象,然后将其存储在会话中。所有这些都会发生在其他SSL上。
我不熟悉序列化,但我想它会像这样工作。
function loadData($id, $key)
{
//open file from storage
$fh = fopen("data/" . $id);
$obj = fh->read //not sure what the read function would be....
$obj = decrypt($obj, $key) // some sort of decryption function using openssl_decrpt
$obj = unserialize($obj
if ($obj != null) //if successful...
{
session_start();
$_SESSION['data'] = $obj;
return true;
}
return false;
}
function saveData($id, $key)
{
//open file from storage
$fh = fopen("data/" . $id);
$obj = serialize($_SESSION(["data"]);
$obj = encrypt($obj, $key);
$obj = serialize($obj
if ($obj != null) //if successful...
{
fh->write($obj) //not sure what the write function would be....
return true;
}
return false;
}
另外,这种方法会安全吗?
答案 0 :(得分:0)
缺点是你的服务器。如果有人可以访问您的服务器,他/她可以:
为了缓解第一个问题,你应该使用salt,但是对于第二个问题你真的没什么可做的 - 只要确保你的服务器没有受到损害......
(请注意,运行字典攻击比反向工程流程要简单得多,并且需要的权限较少。因此,根据您的使用情况,忽略第二个问题可能是合理的)