我正在使用mySqli,我正在尝试在追加/更新数据库之前开发最终的清理功能。
我想知道这个超级简单的功能是否可以帮我完成工作。
function sanitize($me) {
return mysql_real_escape_string($me);
}
内部PHP命令如日期和时间(例如sanitize(date("F j, Y, g:i a"));
)是否也应该清理?
答案 0 :(得分:5)
如果那个超级简单的功能可以帮我完成工作。
没有。仅仅因为基础功能与消毒完全无关,即使是从适当的扩展。
是否还应该清理内部PHP命令输出?
是。因为与数据库相关的逻辑应该不了解数据源。它应该知道这些数据正在进入查询,因此必须正确格式化。
准备好的陈述是实现目标的唯一途径。所以,你必须摆脱这个功能,并开始学习准备好的陈述
答案 1 :(得分:2)
无论是用户输入,是函数调用的结果,还是硬编码数据,都应对所有内容进行清理。有一天,您将决定使日期格式动态化,允许用户设置格式字符串,并且您将忘记对其进行消毒;用户将为格式添加引号,您的SQL将被破坏。
mysql_real_escape_string不属于mysqli
扩展名,请使用正确的函数。更好的是,使用PDO并且你不需要一个函数,只需要param绑定。