Plain text(纯文本)
Plain text 是仅仅包含纯文本的文本。例如,如果你让一个用户在一个表单中键入他/她喜欢的颜色,你期望用户输入“green”(绿色)或者 “purple”(紫色),而不包含任何标识字体。如果在另一个网页中,包含这个输入框,但是却没有不进行任何检查来确保它真的是仅仅包含纯文本,那么就会留下安全漏洞。例如用户没有输入一个颜色,而输入了一下内容:
因此,我们可以使用check_plain()来确保通过将HTML标签转义为HTML实体来消除潜在的危害。从check_plain()返回的文本不包含任何HTML标签,因为将它们转换为相应的实体了。如果一个用户输入了前面的恶意JavaScript代码,那么check_plain()函数就会将其转化为以下文本,现在它就没有危害了:
<img src="javascript:window.location ='<a
HTML text(HTML文本)
HTML text 可以包含HTML标识字体。然而,你永远不要盲目的相信用户,仅仅输入了安全的HTML;一般情况下,你想将用户能够使用标签限制在一个特定的可用的HTML标签子集中。例如,<script>一般都会被你禁用,因为它允许用户在你的站点上运行他们选择的脚本。同样,你也不想让用户使用<form>标签,以在你的站点上建立表单。
Rich text(富文本)
Rich text是比纯文本包含更多信息的文本,它不一定必须是HTML。它可以包含wiki标识字体,或者论坛代码(BBCode),或者其它的标识语言。在展示以前,必须使用一个过滤器来将这些文本转化为HTML。
URL
URL是由用户输入的,或者其它不可信的地方获取的
URL。你可能希望用户输入http://example.com,但是用户却输入了javascript:runevilJS()。在将URL展现在HTML页面以前,你必须使用check_url()来对其进行检查,以确保它的格式良好并且不包含任何攻击。
老葛的Drupal培训班 Think in Drupal