javascript - 如何防止 keyup() jQuery 事件的 XSS?

标签 javascript jquery xss

我正在制作一个带有 keyup() 事件的表单:用户输入的每个字符都会立即显示到同一页面上的另一个 div 中。

它容易受到 XSS 攻击。如何使用 jQuery 保护它?

注意:在我的表单中,我仅使用拉丁字母数字字符以及逗号、分号、冒号。

我已经从 OWASP 搜索了“改革”工具,但有更好的方法吗?

提前致谢。问候

最佳答案

仅了解一些可用的细节:请记住,您不必对所有事情都使用 jQuery 的 HTML“解析”。不要使用 .html(),而是使用 DOM 操作和 .text()(通常也更快)。例如,这个:

$('#result').html('<span class="whatever">' + someInput + '</span>');

会变成这样:

$('#result').text($('<span>').addClass('whatever').text(someInput));
<小时/>

如果不可能,您还可以通过使用 .text() 设置,然后使用 .html() 获取它来实现完美的 HTML 转义。例如,这个:

var data = 'This text: **is bold**';

$('#result').html(data.replace(/\*\*(.+?)\*\*/g, '<b>$1</b>'));

会变成这样:

var data = 'This text: **is bold**';

$('#result').html(data.replace(/\*\*(.+?)\*\*/g, function(x) {
    return '<b>' + $('<div>').text(x).html() + '</b>';
}));

关于javascript - 如何防止 keyup() jQuery 事件的 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134977/

相关文章:

security - 来自图像的跨站点脚本

java - Java中的XSS清理

处理具有属性的 switch case 的 JavaScript 替代方案

jquery - 选择2 : control how many options to show

javascript - 下一个js滚动事件不调用滚动?

javascript - 点击删除特定的JS代码?

jquery - 当表中没有数据时,如何使数据表的最后一列可见= false

security - Laravel5 - 如何在 Blade 中仅渲染 html 标签而不渲染 javascript?

javascript - 单位圆内的 10 个点 - 寻找 D3 力布局的最佳分布?

javascript - 如何为 ASP.NET MVC 3 + Razor View 封装可重用的 "control"