我最近遇到了一个问题。我有一个用户可以发布内容的系统。其中一个字段是标题字段。因此,为了安全地保存用户输入,我在用户提交的标题上使用 htmlspecialchars 并将其发送到一个函数,然后保存到数据库中(使用 mysql_real_escape 之后)
现在在客户端我使用 json get 来获取这个标题
$.getJSON("PHPFILE", function(json) {
// let's say json.title is the title we need so...
var title = json.title;
}
现在问题是这个用户给定的标题值可以包含任何东西,甚至是 html 标签(作为参考,假设它现在包含
<script>alert('');</script>Some Text!
因此,自从我使用 jquery 以来,我想到了使用 .text() 函数清除那些
var cleanTitle = $(title).text();
alert(cleanTitle);
但是,这会立即引发错误。在铬它说
Uncaught Error: Syntax error, unrecognized expression ...
所以我验证了这个标题变量是否是一个字符串。它确实是一个字符串。(顺便说一句,如果此变量仅包含数字,则由于某种原因没有错误)
但是,使用以下内容会为我提供文本,但不会删除标签
var cleanTitle = $.parseHTML(title);
cleanTitle = $(cleanTitle).text();
alert(cleanTitle);
这输出
<script>alert('')</script>Some Text!
如何删除所有 html 标签?有什么建议么?我打算使用这个标题文本来设置浏览器标题。谢谢。