JavaScript 函数参数中的单引号转义

IT技术 javascript quote
2021-01-26 09:38:44

我需要在 JavaScript 函数参数中转义单引号以避免这种情况:

onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5  ',this);"

但是我需要在函数调用中转义它们,因为我不知道将传递的值(db 变量我无法从数据库中转义)。

有没有一个功能可以让我做类似下面的事情?

onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
6个回答
 JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)

将生成一个字符串,您可以安全地嵌入到带引号的属性中,并且在 JavaScript 解释器看到时具有相同的含义。

唯一需要注意的是,某些Unicode换行符(U+2028 和 U+2029)在嵌入 JavaScript 字符串文字之前需要进行转义,但 JSON 仅需要\r\n进行转义。

用反斜杠转义撇号:

onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
请删除Javascript:. 把它放在那里并没有错,但它也没有用,经验不足的开发人员可能认为它是必要的。
2021-03-20 09:38:44
如果字符串包含", , '\'这将失败 或任何其他对单引号或双引号或反斜杠进行编码的实体。例如,字符串不'foo " onmouseover=alert(1)包含单引号,但当嵌入到 HTML 属性中时,就会利用 XSS 漏洞。同样,'foo \会失败,因为 JavaScript 解析器会看到`, not \` 所以关闭引号将被解释为字符串的一部分所以如果下一个字符串值是 ` alert(1)) // `,那么它将被处理作为文字 JavaScript,也会导致任意脚本执行。
2021-03-30 09:38:44
我需要一个函数来在 myfunction 调用中执行转义,因为这是我唯一可以访问的地方。有什么建议吗?
2021-04-04 09:38:44

从问题中可能并不完全清楚,但假设您想要的只是将其发送到 PHP 脚本以存储在数据库中,那么您当然会理想地使用 PHP 的各种方法,例如stripslashes()- 但如果您真的不尝试太花哨了,只需在任何单引号前添加 1 个斜杠就足以从客户端将 SQL 查询直接发送到 PHP。不安全,但也许也没有必要。

str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x

有诀窍。,例如在这样的事情中:

var body = $('#body').val().replace(/'/g, "\\'");
myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );

MySQL 现在将存储您body在表单字段中看到的内容。

我正在测试这个并注意到 MySQL 只是删除了像 ` 这样花哨的单引号,所以你也必须转义它们。
2021-04-13 09:38:44

这个函数对我有用(它再次删除并恢复引用):猜测要发送的数据是输入元素的值,

var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));

然后再次获取原文:

var originalText = decodeURIComponent(Url);
var cmpdetail = cmpdetail.replace(/'/g, "\\'");

它为我工作。