[英]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.