如何用ZF2预防XSS?

时间:2017-10-24 21:40:07

标签: php zend-framework2 xss

在以HTML格式呈现之前需要转义此行:

$this->view->zipcode = $this->getRequest()->getParam('zipcode','');

之前我没有使用过ZF2,我想正确escape这一行来保护我的网站免受XSS攻击。

我不知道如何在Zend Framework 2中正确使用escape()htmlspecialchars()和其他人。

1 个答案:

答案 0 :(得分:2)

关于如何使用转义HTML有很多问题,并且使用htmlspecialchars()并不完全是火箭科学,但是因为你将这个范围限定为ZF2,让我们试着让它变得有用。

ZF2完全包含Escaper类,适用于这种情况。

使用它很容易:

$escaper             = new Zend\Escaper\Escaper('utf-8');
$unsafe_input        = $this->getRequest()->getParam('zipcode','');
$safe_output         = $escaper->escapeHtml($unsafe_input);
$this->view->zipcode = $safe_output;

该类还有处理JS,CSS,URL和HTML属性的特定方法。另外,请注意,传递给Escaper构造函数的参数应与要渲染的页面的字符编码相匹配。 UTF-8现在大多是安全的赌注,但其他编码如'ISO-8859-1'并不少见。

正如有些人在评论中所说,您也可以使用内置帮助程序直接在视图上进行转义。视图应该知道可能来自用户输入的数据,或者您只是转义要输出的每个变量:

因此,在您看来,按照您的示例,您可以:

 $this->escapeHtml($this->zipcode);