我正在制作一个带有 keyup() 事件的表单:用户键入的每个字符都会立即显示到同一页面上的另一个 div 中。
它容易受到 XSS 的攻击。如何使用 jQuery 保护它?
注意:在我的表格中,我只使用拉丁字母数字字符,以及逗号、分号、冒号。
我已经从 OWASP 搜索了“改革”工具,但有没有更好的方法?
提前致谢。问候
我正在制作一个带有 keyup() 事件的表单:用户键入的每个字符都会立即显示到同一页面上的另一个 div 中。
它容易受到 XSS 的攻击。如何使用 jQuery 保护它?
注意:在我的表格中,我只使用拉丁字母数字字符,以及逗号、分号、冒号。
我已经从 OWASP 搜索了“改革”工具,但有没有更好的方法?
提前致谢。问候
有了一些可用的细节:请记住,您不必对所有内容都使用 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>';
}));
我发现其中包含的 xss 清洁器node-validator
非常全面。您感兴趣的代码可在此处获得。您需要对其进行一些清理以在浏览器中使用(删除 module.exports 并包装在 Javascript 闭包中),但它应该可以无缝地工作。如果您愿意,也可以将其直接制作成 JQuery 插件。