我应该使用php serialize而不是使用数据库存储密码吗?

时间:2012-01-18 19:21:54

标签: php ajax passwords storage

我正在使用ajax直接编辑网页,使用简单的html dom编辑php。我没有看到使用数据库的重点。然而,当我想使用序列化在web服务器上存储应用程序的管理员密码时,我的手感到恐惧,即使它高于htdocs,它是加密的,我使用的是反暴力脚本。

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

我期待你的想法......

5 个答案:

答案 0 :(得分:3)

具有正确chmod权限的文件与此实例中的数据库存储一样安全。

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

只要此文本文件不在可通过Web服务器公开访问的目录中,它就不会那么安全了。当然,如果有人获得root访问权限,那么无论如何都会让你感到满意。

从不所做的是存储明文密码。 md5()(只是)没关系。 sha1()现已成为加密此类数据的更好选择。

答案 1 :(得分:2)

数据库不会让您的密码比文件系统更安全,因为如果您的服务器被黑客入侵,您的数据库密码也会被黑客入侵,这意味着无论如何都会显示管理员密码

答案 2 :(得分:1)

如果此登录信息仅适用于您,则可以更轻松地将密码存储在代码/文件中。但是您必须加密密码以防止hackerkiddies读取此文件并登录。请不要忘记文件上的正确chmods;)

答案 3 :(得分:1)

只要你没有在文件中存储纯文本密码,我就不会在实际的php文件中看到密码哈希问题。

使用SHA1的示例:

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

答案 4 :(得分:0)

你应该存储你的" Hash"安全的地方(你用它生成密码的密钥)。如果有人可以访问" hash / key"那么你在哪里存储密码并不重要,他们可以获得你的密码。关于数据库的好处是,它最有可能更容易遍历您的目录结构并查找文件,而不是连接到您的数据库,发现您的表结构,然后发现存储在字段中的值在数据库..