形成数据最佳实践


Form data best practices

好吧,我知道所有在一个数据清理策略的答案,不要这样做。我的问题是:是否应该采取任何标准的行动来确保表单数据的安全?除了做我自己的表单验证(即电子邮件,电话等)。

作为目前这是关系到一个WebApp (HTML, PHP和MYSQL),但我不会说这应该仅限于我想知道的最佳实践。从我所读到的,任何事情都应该做的唯一时间是当在一个数据清理步骤是与该数据采取特定的行动之前(即之前存储在我的数据库使用mysql_real_escape_string)。

编辑:

除了SQL注入之外,还有哪些其他恶意攻击可能因不清理数据而发生?

首先,我假设您正在使用MySQLi (PDO也很好)和而不是已弃用的MySQL扩展名。如果没有,那么你绝对应该切换到这两个中的一个。

在将信息插入数据库之前,始终确保使用了准备好的语句参数化查询 (参见这里:如何在PHP中防止SQL注入?)

对于在email, IP和其他类型的数据插入数据库之前进行验证,考虑使用filter_var() (参见这里: http://php.net/manual/en/function.filter-var.php)

从数据库中提取信息时,确保使用htmlspecialchars()strip_tags()

示例: htmlspecialchars(strip_tags($message_body))

Magic Quotes告诉我们,任何一种"马上"的卫生都是不好的做法。我们在运行时需要验证数据,因为不同的用法需要不同的验证。

对于验证目的,现在有许多可用的库,如GUMP和Zend Forms(更多的库可以在这里找到:最简单的PHP表单验证库?)。

注:你说的是mysql_real_escape_string。确保您使用PDO或mysqli而不是现在已弃用的原始MySQL API。更多信息请阅读:为什么我不应该't在PHP中使用mysql_*函数?