php的mysql_real_escape_string()的等效javascript代码是什么?

时间:2011-03-04 07:45:36

标签: php javascript mysql sql-injection

mysql_real_escape_string()的等效javascript代码是什么?

5 个答案:

答案 0 :(得分:4)

基于该方法的PHP documentation,这将大致相同。不推荐使用PHP中的mysql_real_escape_string方法。

function mysqlEscape(stringToEscape){
    return stringToEscape
        .replace("\\", "\\\\")
        .replace("\'", "\\\'")
        .replace("\"", "\\\"")
        .replace("\n", "\\\n")
        .replace("\r", "\\\r")
        .replace("\x00", "\\\x00")
        .replace("\x1a", "\\\x1a");
}

不幸的是,根据5.6 mysql API docs,这并不是mysql_real_escape_string所做的。它没有考虑其他因素的字符编码。

即使您只使用前两次替换,上述方法也可能会执行您正在寻找的内容。

function mysqlEscape(stringToEscape){
    return stringToEscape
        .replace("\\", "\\\\")
        .replace("\'", "\\\'");
}

根据mysql文档。

  

MySQL只需要反斜杠,并且用于引用查询中字符串的引号字符将被转义。 mysql_real_escape_string()引用其他字符以使它们更容易在日志文件中读取

答案 1 :(得分:2)

当你正在寻找流行的PHP函数的javascript等效版本时,一个很好的提示是

phpjs.org

但是你可能正在寻找错误的功能。 mysql_real_escape_string()只能在mysql数据库连接处于活动状态时使用(更多详细信息可以在mysqli real_escape page上读取。即mysql_real_escape_string()实际上不是PHP实现,而是更多MySQL。如果没有数据库使用连接只会给你一个空变量。

您可能已经找到了添加斜线并删除换行符的函数?你可以查看phpjs.org他们如何实现add_slashes函数。我想,可以使用自定义替换功能删除换行符。

也许在什么环境下解释一下你需要这个函数在javascript中运行,所以我们可以推动你朝着正确的方向前进(也就是说你在javascript中使用mysql_real_escape_string,但提供你真正需要的函数的提示)< / p>

答案 2 :(得分:1)

我有一个用例,我需要转义自己的数据(而不是用户输入)才能在node.js脚本中使用它。我修复了@majinnaibu回答中的代码,因为它只是逃避了第一次出现的特殊符号。

function mysqlEscape(stringToEscape){
    if(stringToEscape == '') {
        return stringToEscape;
    }

    return stringToEscape
        .replace(/\\/g, "\\\\")
        .replace(/\'/g, "\\\'")
        .replace(/\"/g, "\\\"")
        .replace(/\n/g, "\\\n")
        .replace(/\r/g, "\\\r")
        .replace(/\x00/g, "\\\x00")
        .replace(/\x1a/g, "\\\x1a");
}

希望这有助于其他人。

答案 3 :(得分:0)

没有,因为来自JavaScript的字符串仍被视为“用户输入”,不应直接插入数据库。您的服务器端必须进行其他验证。有编码URL的功能和类似的东西。

你想做什么?

答案 4 :(得分:-1)

我认为我们可以使用escape()方法