Php 清理从表单注入mysql的数据
我的函数库中有一个名为sanitse的函数。它接受字符串的一个参数并返回经过清理的字符串Php 清理从表单注入mysql的数据,php,mysql,Php,Mysql,我的函数库中有一个名为sanitse的函数。它接受字符串的一个参数并返回经过清理的字符串 function sanitise($data){ return htmlentities(mysql_real_escape_string($data)); } 我正在开发一个论坛,我需要清理以文本形式提交的数据。(它存储在数据库中)。但也出现了一些问题。存储数据时,新行将表示为\r\n,并在检索数据后显示在线程上。应该换一条新路线。nl2br并没有解决这个问题,我在另一篇文章中读到,这应该从问
function sanitise($data){
return htmlentities(mysql_real_escape_string($data));
}
我正在开发一个论坛,我需要清理以文本形式提交的数据。(它存储在数据库中)。但也出现了一些问题。存储数据时,新行将表示为\r\n,并在检索数据后显示在线程上。应该换一条新路线。nl2br并没有解决这个问题,我在另一篇文章中读到,这应该从问题的根源(函数)来解决,而不是“黑客”解决方案来纠正它
如果我不整理数据,注释将正确显示。但这当然不安全
如果您有任何建议,我们将不胜感激。无论如何,您所做的并不安全。你真的应该明白你在做什么 mysql\u real\u escape\u string():此函数获取字符串并将其转义,以便在SQL语句中使用。这样做的目的就是让查询解析器清楚什么是数据,什么是查询。你明白这一点很重要
htmlentities()/htmlspecialchars():这些函数对字符串进行转义,以便它们可以在HTML中使用,而不会让HTML解析器认为
等字符感谢您的响应。因此,在这种情况下,交换mysql\u real\u escape\u字符串和htmlentities将使代码安全,当然前提是在注入mysql之前调用函数?@jollinski,是的,但不要这样做!为数据库连接切换到PDO,使用准备好的查询,并在HTML中输出任何变量数据时使用htmlspecialchars()
进行转义。那么,你就不必那么担心这些问题了。否则,您只会将数据弄得一团糟。