ZF2如何防止XSS?

How to prevent XSS with ZF2?

在 HTML:

中渲染之前需要转义这一行
$this->view->zipcode = $this->getRequest()->getParam('zipcode','');

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

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

关于如何使用 escape HTML 有很多问题,使用 htmlspecialchars() 并不是什么高深的科学,但是既然你把它的范围限定在 ZF2,让我们试着让它变得有用.

ZF2 包括 Escaper class 正是针对这种情况。

使用起来非常简单:

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

class也有处理JS、CSS、URLs、HTML属性的具体方法。另外,请注意传递给 Escaper 构造函数的参数应该与您正在呈现的页面的字符编码相匹配。 UTF-8 现在基本上是一个安全的选择,但像 'ISO-8859-1' 这样的其他编码并不少见。

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

所以在您看来,按照您的例子,您会:

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