用户将在文本区域中输入文本。然后将其直接插入到 mySQL 数据库中。我在上面使用了 trim、htmlentities、mysql_real_escape_string 并且我启用了魔术引号。将该数据输出回文本区域时,我应该如何对其进行清理?
谢谢你的帮助。我从来没有太确定这样做的正确方法......
用户将在文本区域中输入文本。然后将其直接插入到 mySQL 数据库中。我在上面使用了 trim、htmlentities、mysql_real_escape_string 并且我启用了魔术引号。将该数据输出回文本区域时,我应该如何对其进行清理?
谢谢你的帮助。我从来没有太确定这样做的正确方法......
htmlentities
保存时不应使用。您应该htmlentities
在显示它时使用。经验法则是在需要之前不要对数据进行编码/清理。如果您在保存时对它进行操作,那么当用户想要编辑输入时htmlentities
您必须对文本进行操作。html_entity_decode
因此,您可以根据需要进行消毒,仅此而已。保存时,您需要对 SQL 注入进行清理,这样就可以mysql_real_escape_string
了。显示时,您需要对 XSS 进行清理,因此您可以这样htmlentities
做。
另外,我不确定您是否看到了 Darryl Hein 的评论,但您确实不想启用 magic_quotes。它们很糟糕,很糟糕,从 PHP 5.3 开始已被弃用,并且将在 PHP 6 中完全消失。