preg_replace函数用于数据库和Web安全性

时间:2012-02-03 19:31:58

标签: php mysql forms security preg-replace

我在面向对象的程序中使用preg_replace函数来删除字符以用于安全目的。但是该字段需要允许某些字符,如@或数字等。我可以在preg_replace函数中放置什么来保护我的数据库,但允许用户输入适当的数据。此数据包括电话号码,姓名,用户名等。密码使用MD5功能加密。

我被告知使用md5和preg_replace是不好的想法。如果是这样,我可以使用哪些功能?

2 个答案:

答案 0 :(得分:3)

要保护数据库使用mysql_real_escape_stringmysqli_real_escape_string,PDO参数绑定取决于您使用的内容。在放入数据库之前,无需用preg_replace替换任何内容。

答案 1 :(得分:1)

仅依靠preg_replace来保证安全性不是一个好主意。它可用于强制/标准化电话号码或日期格式等内容。

MD5和SHA1等算法用于散列。您可以在任何数据上使用它,甚至是危险的不受信任的输入,并且您将始终获得十六进制字符串。但是,因为哈希是单向的,所以不能将它们“解密”回原始输入。

@dfsq是对的 - 使用这些方法可以安全地将潜在危险的输入保存到数据库中。你想要使用哈希的唯一情况是密码这样的东西,没有人能够解密它们。 (如果你对密码进行哈希处理,请确保你也加密它们!)