javascript - 创建 HTML 元素时清理用户输入

标签 javascript jquery html xss

我正在尝试使用纯 HTML5 和 Javascript 制作一个待办事项应用程序,但我遇到了清理输入的问题。

例如:如果用户输入 <script>alert("XSS")</script> ,代码在页面上执行。

添加元素的代码是:

if ($('#TextArea').val() !== "") {
  var taskID = new Date().getTime();
  var taskMessage = $('#textArea').val();
  localStorage.setItem(taskID, taskMessage);
}

而显示元素的代码是:

var i = 0;
for (i = localStorage.length; i != 0; i--) {
  var taskID = localStorage.key(i - 1);
  $('#task').append("<li id='" + taskID + "'>" + localStorage.getItem(taskID) + "</li>");
}

有什么方法可以只使用 HTML5 和 Javascript 属性来清理数据吗?

最佳答案

与所有 XSS 预防措施一样:不要从字符串构建 HTML,尤其不要当这些字符串包含用户提供的值时。

jQuery 有 a convenient facility to build elements safely - 您可以传入具有以下属性的对象:

$("<li>", {
  id: taskID,
  text: localStorage.getItem(taskID)
}).appendTo('#task');

事实上,我建议您绝对不要使用字符串连接来构建 HTML。对于比上述情况更复杂的情况,请使用经过良好测试的 HTML 模板库,如 MustacheHandlebars .

关于javascript - 创建 HTML 元素时清理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769987/

相关文章:

Javascript 在选择时将值生成到表单文本框中

javascript - JSX 如何从循环中获取计数器并显示状态

javascript - Ajax自动改变变量

jQuery 检查空变量

javascript - 调整 JQuery 问题留下的边距

javascript - 具有多个输入文件的多图像预览

javascript - 在调整大小的窗口中复制 div 中的内容会产生重复项

javascript - 单击图表可缩放图表

javascript - Ace Editor - 如何找到一个或所有实例?

javascript - 从 javascript 动态添加元素