繁体   English   中英

在将文本区域输出回文本区域时,如何正确清理从文本区域接收的数据?

[英]How do I properly sanitize data received from a text area, when outputting it back into the text area?

用户将在textarea中输入文本。 然后将其直接插入mySQL数据库。 我在它上面使用trim,htmlentities,mysql_real_escape_string,并启用了魔术引号。 将数据输出回textarea时,我应该如何清理它?

谢谢你的帮助。 我从来没有太确定这样做的正确方法......

保存时不应使用htmlentities 你应该在显示它时使用htmlentities 经验法则是在您需要之前不对数据进行编码/清理。 如果你htmlentities就可以了,当你保存,那么你所要做的html_entity_decode当用户想要编辑输入的文字。 所以你要消毒你需要的东西,仅此而已。 保存时,需要清理SQL注入,所以你要mysql_real_escape_string它。 显示时,您需要为消毒XSS,所以你htmlentities吧。

另外,我不确定你是否看过Darryl Hein的评论,但你真的不想启用magic_quotes。 它们是一个坏的,坏的东西,并且从PHP 5.3开始被弃用,并且将在PHP 6中完全消失。

除了Paolo关于何时使用htmlentities()的答案,除非你使用旧版本的PHP,否则正确的方法来清理插入mysql数据库的方法是使用作为mysqli扩展的一部分的Prepared Statements 这取代了使用mysql_real_escape_string()任何需要。

除此之外,我认为你有事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM