在仍然执行innerHTML更改的同时清理innerHTML?

时间:2016-11-10 22:31:46

标签: javascript html

我正在创建一个警报插件(纯JavaScript,没有jQuery),允许用户在其警报框中输入自定义HTML。但是,XSS攻击和DOM攻击是一个主要问题,因为我使用.innerHTML来实现这一目标。我对输入卫生的尝试如下。问题是HTML标记包含在输出中。有没有办法防止这些攻击,同时仍然执行请求的innerHTML更改并且输出中没有显示标记?

 <!--Example-->

 //HTML
 <div id='div'></div>

 //JavaScript
 var name = '<h1>james</h1>';

 function sanitizeHTML(unsafeString) { 
  return unsafeString.replace(/&/g, '&amp;')
  .replace(/</g, '&lt;')
  .replace(/>/g, '&gt;')
  .replace(/\"/g, '&quot;')
  .replace(/\'/g, '&#39;')
  .replace(/\//g, '&#x2F;');
};

document.getElementById('div').innerHTML = sanitizeHTML(name);

//Outputs '<h1>james</h1>' with tags showing

0 个答案:

没有答案