0

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

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

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

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

提前致谢。问候

4

2 回答 2

3

有了一些可用的细节:请记住,您不必对所有内容都使用 jQuery 的 HTML“解析”。代替 using .html(),使用 DOM 操作 and .text()(通常也更快)。例如,这个:

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

会变成这样:

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

如果这是不可能的,您还可以通过设置.text()并使用.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>';
}));
于 2012-04-13T03:53:39.873 回答
1

我发现其中包含的 xss 清洁器node-validator非常全面。您感兴趣的代码可在此处获得。您需要对其进行一些清理以在浏览器中使用(删除 module.exports 并包装在 Javascript 闭包中),但它应该可以无缝地工作。如果您愿意,也可以将其直接制作成 JQuery 插件。

于 2012-04-13T03:55:22.247 回答