为什么在第一种情况下会出现反斜杠,而在第二种情况下呢?逃避功能不应该改变什么吗?即使它是最合乎逻辑的str.replace('\'', '\\\'')
,所以...提前谢谢。
escape = function(str) {
str = str.replace('\\', '\\\\')
str = str.replace('\'', '\\\'')
str = str.replace('\"', '\\\"')
str = str.replace('\0', '')
str = str.replace('\r', '\\r')
str = str.replace('\n', '\\n')
return str;
}
var original = ("Maura';--");
var escaped = escape("Maura';--");
//var encoded = btoa(escaped);
console.log(original);
console.log(escaped);
//console.log(encoded);
输出:
'莫拉'; - ”
'莫拉\'; - ”
在第一种情况下,您不在字符串escape
上应用original
函数。在第二种情况下,由于escape
函数的第二行而改变了
str = str.replace('\'', '\\\'')
以上行与
str = str.replace("'", '\\\'').
而第二部分\\\'
将成为\'
。