对客户端散列、salts和设置使用相同的数据库会暴露客户端散列吗



如果我的web服务器上有一个XML数据库;

<Database>
<Client sid="0123456789abcdefg" name="John Doe" email="johndoe@mail.com" hash="9876543210abcdefg" salt="abcdefg9876543210">
<Setting>A Setting</Setting>
<Setting>Another Setting</Setting>
</Client>
...
</Database>

我用hash和salt登录,检索SID,并通过PHP重定向到主页;

header("Location: home.html?sid=" . $sid);

然后通过JavaScript使用位置栏中的SID从同一数据库中检索用户设置,我会公开我的客户端的哈希吗?

有没有更好的方法,或者更标准的方法,在网上设置和获取用户设置?

附言:除非你有充分的理由,否则我真的,真的,不想使用SQL。我更喜欢能够阅读我的数据库,并且我喜欢XML的有形性和多功能性。

编辑:经过更多的研究,我了解到PHP支持存储SESSION[]变量的系统。这对我来说是完美的,因为事实上,我正在使用会话!

W3C表示:

PHP会话变量用于存储有关用户会话的信息或更改用户会话的设置。会话变量保存有关单个用户的信息,并且可用于一个应用程序中的所有页面。

比在地址栏中公开各种数据要好得多。=)

只要您的DB文件无法从HTTP(即被.htaccess或等效程序锁定)和其他协议(即不位于匿名FTP可访问的目录中)访问,唯一的风险就是(无意中)让hash&salt是在一堆其他与用户相关的数据中收集的,并发送给您的客户。

如果您有相当于SQL*选择器的请求,那么这可能有点问题。您可能希望将关键数据放入不同的数据库文件中,并将访问封装在专用于用户注册和登录的接口中,以确保没有其他代码能够从主数据库中获取这些数据(即使是错误的)。