事实证明,MysqL_real_escape_string()非常简单。
调用MysqL的库函数MysqL_real_escape_string,该函数将反斜杠添加到以下字符前:\ x00,\ n,\ r,\,’,’和\x1a。
实际上听起来很简单。您可以执行以下操作:
function MysqL_real_escape_string (str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
return "\\0";
case "\x08":
return "\\b";
case "\x09":
return "\\t";
case "\x1a":
return "\\z";
case "\n":
return "\\n";
case "\r":
return "\\r";
case "\"":
case "'":
case "\\":
case "%":
return "\\"+char; // prepends a backslash to backslash, percent,
// and double/single quotes
default:
return char;
}
});
}
:我还没有通过任何类型的单元测试或安全测试来运行它,但是它确实可以工作,并且,作为一个额外的好处,它转义了制表符,退格键和’%’,因此也可以使用按照OWASP的建议在LIKE查询中使用(不同于PHP原始版本)。
我确实知道这MysqL_real_escape_string()
是字符集感知的,但是我不确定这会带来什么好处。