所以用javascript更改网站标题并不是那么困难:
document.title = 'title';
但是我从用户设置变量设置标题:
document.title = userVar; // where userVar is a variable set by a user
这就是令人讨厌的地方。由于变量是由用户设置的,因此它几乎可以包含任何内容。像!@#$%^&*()_+=-
甚至'"
或unicode characters
甚至是脚本<script>alert('');</script>
这样的字符。基本上,用户可以输入许多组合作为变量来打破我们的页面。我们如何实现以下内容:
document.title = clean(userVar);
加分PHP问题: 从php变量设置页面标题时,我们也会遇到类似的问题。我们如何清理变量以便将它们用作网站标题?
答案 0 :(得分:3)
我认为你应该安全。默认情况下,不会执行标题标记中添加的任何标记或代码。
标题可能包含字符实体(用于重音字符,特殊字符等),但可能不包含其他标记(包括注释)。
来源:w3.org
从我在各种浏览器中看到/测试的内容,标题标签中的所有字符都被视为纯文本。
答案 1 :(得分:2)
从PHP开始,您可以简单地使用strip_tags,它至少会删除脚本标记:
答案 2 :(得分:0)
您可以使用RegExp清理userVar
<强>的Javascript 强>
function clean(userVar){
return userVar.replace(/\W+/ig, "");
}
<强> PHP 强>
function clean($userVar){
return preg_replace("/\W+/", "", $userVar)
}