我应该使用php序列化而不是使用数据库来存储密码吗


Should I store passwords using php serialize instead of using database?

我直接使用ajax编辑网页,并使用简单的html dom编辑php。当我可以不用数据库的时候,我不认为使用数据库有什么意义。然而,当我想到使用serialize将应用程序的管理密码存储在Web服务器上时,我的手会吓得发抖,尽管它高于htdocs,它是加密的,我使用的是反暴力脚本。

我不想只为一个密码使用数据库,但它足够安全吗?

我期待着你的想法。。。

在这种情况下,具有正确chmod权限的文件与数据库存储一样安全。

考虑一下:mysql数据库实际上存储在服务器文件系统上的二进制文件中。如果恶意用户访问了您的服务器,他们对二进制数据库文件的访问权限与任何其他文件相同,包括文本文件中的序列化和加密数据。

只要这个文本文件不在可以通过网络服务器公开访问的目录中,它的安全性就不会降低。当然,如果有人获得了root访问权限,那么无论哪种方式,你都相当于foobar。

您应该永远不要存储明文密码。md5()(只是)还好。CCD_ 2现在已经成为加密这种类型的数据的更好的选择。

数据库不会让你的密码比文件系统中的密码更安全,因为如果你的服务器被黑客入侵,你的数据库密码也会被黑客入侵。这意味着管理员密码在任何情况下都会被泄露

如果此登录仅适用于您,那么将密码存储在代码/文件中会更容易。但你必须加密你的密码,以防止黑客读取这个文件和登录。请不要忘记文件上正确的chmod;)

只要你没有在文件中存储纯文本密码,我认为在实际的php文件中保存密码哈希没有问题。

使用SHA1:的示例

if(sha1($_POST['password']) == "8cb2237d0679ca88db6464eac60da96345513964") {
    //success
} else {
    //failure
}

您应该将"Hash"存储在安全的地方(生成密码时使用的密钥)。不管你把密码存储在哪里,如果有人能访问"hash/key",他们就能访问你的密码。数据库的好处是,与连接到数据库、发现表结构、然后发现存储在数据库字段中的值相比,遍历目录结构和查找文件可能更容易。。