我正在为 Expression Engine 编写一些脚本,并且被告知我们输出到页面的每一条数据都需要“清理”以防止 XSS。
例如在这里,我从数据库中获取所有类别,排序到一个数组并返回到表达式引擎。
PHP 函数
public function categories()
{
$query = $this->crm_db->select('name, url_name')
->order_by("name", "asc")
->get_where('activities_categories', array('active'=>1));
foreach($query->result() as $row)
{
$activityCategories[0]['cats'][] = array(
'categoryName' => $row->name,
'categoryURL' => $row->url_name,
);
}
return $this->EE->TMPL->parse_variables($this->EE->TMPL->tagdata, $activityCategories);
}
模板代码
{exp:activities:categories}
{cats}
<a href="/{categoryURL}">{categoryName}</a>
{/cats}
{/exp:activities:categories}
有人告诉我,我需要对正在输出的每条数据使用 htmlspecialchars() 函数。
这是必要的吗?
这个对吗?
例子:
foreach($query->result() as $row)
{
$activityCategories[0]['cats'][] = array(
'categoryName' => htmlspecialchars($row->name),
'categoryURL' => htmlspecialchars($row->url_name),
);
}
非常感谢!:)