如何使用HTML标记和实体安全地打印字符串

时间:2015-08-13 06:17:27

标签: javascript php datatables xss

我从MySQL数据库中检索到一个字符串(在存储到db之前进行转义), 存储如下:

例如:

<script>alert(\'hi, im a bad injected script\');</script>

我尝试在jQuery DataTables增强的表中打印存储的数据:

var dataString = data;
// data contains the string retrieved from database..

someDataTable.row.add([dataString]).draw();
// add/print the retrieved string to a table row

网页执行网页中打印的数据(脚本)。我应该怎样防止这种情况。我希望页面能够打印脚本而不是执行它。

2 个答案:

答案 0 :(得分:1)

  

<强>解

使用以下代码对HTML标记和实体进行编码:

dataString = $('<div/>').text(data).html();
  

<强>样本

请参阅this jsFiddle以获取代码和演示。

答案 1 :(得分:-1)

使用htmlentities($str)存储字符串。它会将html实体转换为字符代码。