我正在制作一个带有 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/