我正在使用mysqli准备好的语句.我是否仍应使用以下功能清理用户输入:
function sanitise($string){
$string = strip_tags($string); // Remove HTML
$string = htmlspecialchars($string); // Convert characters
$string = trim(rtrim(ltrim($string))); // Remove spaces
$string = mysql_real_escape_string($string); // Prevent SQL Injection
return $string;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
没有!不,不.如果您已经在使用预准备语句,MySQL需要查看值,而不是它的某些转义版本.如果你添加mysql_real_escape_string一个字符串并将其作为预准备语句的值,那么你刚刚把它搞砸了,例如,引号加倍!
现在,就数据清理而言,这完全取决于有效输入是什么或不是有效输入的业务规则.在您的示例中,strip_tags更多地是关于html-> raw(格式)转换而不是卫生.所以rtrim(ltrim- 这是一个业务转型.