我正在将我的函数从mysql转换为mysqli。在mysql中,我使用了一个通用函数,我可以将数据解析为删除SQL威胁。我已尝试在mysqli中使用此方法,但任何通过它的数据都不会退出。如果我var_dump字符串我得到结果
string(0) ""
这是我的功能
function sanitize($data) {
return htmlentities(strip_tags(mysqli_real_escape_string($data)));
}
答案 0 :(得分:0)
您实际上不需要使用myslqi_real_escape_string()
。
相反,只需使用prepared statements(查看此PHP文档页面中的示例),您就可以了。
除了防止不良数据之外,准备好的语句也可以更快地运行,尤其是对于重复数据。
答案 1 :(得分:-1)
这是我的功能
从PHP清理输出必须适合数据传输的介质。所以你应该使用mysql [i] _real_escape_string()进入你的DBMS数据,htmlentities用于进入html或xml的内容,urlencode用于进入网址的数据,quoted_printable_encode用于电子邮件中的文本内容....
stip_tags将HTML转换为纯文本。只有在没有显式方法转义目标时,才应使用add_slashes功能。
通过混合和匹配,您严重损害了安全目标。
使用mysql [i] _real_escape_string()准备进入DBMS的数据。将它应用于已经使用strip_tags()处理的字符串应该没有任何不良影响(但是反过来会这样做会BREAK)。
使用htmlentities以便在发送到浏览器之前转义内容。