0

所以用 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 变量设置页面标题时,我们也可能遇到类似的问题。我们如何清理变量以便它们可以用作网站标题?

4

3 回答 3

3

我想你应该是安全的。默认情况下,不会执行任何添加到标题标签中的标签或代码。

标题可能包含字符实体(用于重音字符、特殊字符等),但可能不包含其他标记(包括注释)。

资料来源:w3.org

从我在各种浏览器中看到/测试的结果来看,标题标签中的所有字符都被视为纯文本。

于 2013-08-29T12:32:08.780 回答
2

在 PHP 中,您可以简单地使用 strip_tags,它至少会删除脚本标签:

http://de1.php.net/manual/en/function.strip-tags.php

于 2013-08-29T12:24:56.683 回答
0

您可以使用 RegExp 进行清理userVar

Javascript

MDN 字符串.replace

function clean(userVar){
   return userVar.replace(/\W+/ig, "");
}

PHP

PHP preg_replace

function clean($userVar){
   return preg_replace("/\W+/", "", $userVar)
}
于 2013-08-29T12:37:07.560 回答