繁体   English   中英

转义用于 javascript 的 Qualtrics 管道文本(更一般地说,如何安全地转义用户生成的文本)

[英]Escaping Qualtrics piped text for use in javascript (more generally, how to safely escape user-generated text)

在我的 Qualtrics 调查中,我有一个自由回答(文本框)问题。 我想将这个问题的回答写入 javascript,以便我可以进行一些复杂的文本处理并将结果发布到外部页面。

看起来 Qualtrics 的官方方法是使用管道文本代码:

var answer = "${q://QID1/ChoiceTextEntryValue}"

但这会生成 javascript 代码,并将文字响应插入到代码中。 如果调查者在他们的回答中加上引号,就会破坏密码。 我还验证了它可以用来注入任意的javascript!

有没有办法将用户生成的值安全地分配给变量?

我试过的:

  • 如果有一个 API 调用可以将响应直接放入 javascript 变量而不必使用管道文本,那就太好了。 我检查了他们的API 文档并与技术支持人员进行了交谈,但看起来不存在这样的功能。
  • 如果 Qualtrics 有一个内置的字符替换功能,我可以用它来去除引号,那也会很有帮助,但我认为它没有。
  • 我可以使用回复验证来防止受访者提交带有引号的回复。 这是我想出的唯一可行的解​​决方案,但对用户来说会很烦人。

我参加聚会有点晚了,但是通过关注此支持票,我能够得到这样的问题回复文本:

 Qualtrics.SurveyEngine.addOnPageSubmit(function() { /* Get current question ID (eg 'QID10') */ var qid_str = this.questionId; /* console log to check what ID was capture (you can comment this line)*/ console.log('Question is: QR~' + qid_01_str) // Save the current question's response value QR~QID247~TEXT var responseTextField = document.getElementById('QR~' + qid_str); var currentResponse = responseTextField.value; /* console log to see what was captured (you can comment this line too)*/ console.log('response text is: ' + currentResponse) });

这解决了我自己在管道文本破坏事物中使用双引号的问题。 希望它可以帮助像我这样也有这个问题的其他考古学家!

又晚了一点 - 也许您已经继续前进或找到了解决方案? 您能否确认您正在谈论在 Javascript 中操作文本字符串(无论它来自调查中的文本框还是通过联系人列表上传导入)? 如果是这样,我刚刚在How To Work with Strings in JavaScript 中找到了一些很好的信息其中讨论了使用反引号而不是单引号或双引号来封装管道文本。 然后,这允许按字面意义使用/记录字符串,并考虑字符串中的撇号和双引号。

所以而不是: var answer = "${q://QID1/ChoiceTextEntryValue}"

你用反引号替换双引号。 恐怕我不能在这里发布它,因为这里的代码工具使用反引号!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM