-2

我正在将我的函数从 mysql 转换为 mysqli。在 mysql 中,我使用了一个通用函数,我可以将数据解析为以消除 SQL 威胁。我曾尝试在 mysqli 中使用此方法,但是通过它的任何数据都不会返回。如果我 var_dump 字符串,我会得到结果

string(0) ""

这是我的功能

function sanitize($data) { 
return htmlentities(strip_tags(mysqli_real_escape_string($data))); 
} 
4

2 回答 2

0

你真的不需要使用myslqi_real_escape_string().

相反,只需使用准备好的语句(在此 PHP 文档页面中查找示例),您就可以了。

除了防止坏数据之外,准备好的语句也可以更快地工作,特别是对于重复数据。

于 2013-04-03T10:27:48.200 回答
-1

这是我的功能

清理 PHP 的输出必须适合数据传输的介质。因此,您应该将 mysql[i]_real_escape_string() 用于进入 DBMS 的数据,将 htmlentities 用于进入 html 或 xml 的内容,将 urlencode 用于进入 url 的数据,使用quoted_printable_encode 用于电子邮件中的文本内容......

stip_tags 将 HTML 转换为纯文本。add_slashes 函数只有在您没有明确的方法转义到目的地时才应该使用。

通过混合和匹配,您正在严重损害安全目标。

使用 mysql[i]_real_escape_string() 准备数据以进入您的 DBMS。将其应用于已使用 strip_tags() 处理的字符串应该不会产生不良影响(但反之则将 BREAK)。

使用 htmlentities 在发送到浏览器之前转义内容。

于 2013-04-03T12:50:03.013 回答