Php 如何使用ZF2防止XSS?

Php 如何使用ZF2防止XSS?,php,zend-framework2,xss,Php,Zend Framework2,Xss,在HTML中呈现该行之前,需要转义该行: $this->view->zipcode = $this->getRequest()->getParam('zipcode',''); 我以前没有使用过ZF2,我想正确地转义这一行以保护我的站点免受XSS攻击 我不知道如何正确使用Zend Framework 2中的escape(),htmlspecialchars(),以及其他内容。关于如何使用escape HTML有很多问题,使用htmlspecialchars()并不完全是

在HTML中呈现该行之前,需要转义该行:

$this->view->zipcode = $this->getRequest()->getParam('zipcode','');
我以前没有使用过ZF2,我想正确地
转义这一行以保护我的站点免受XSS攻击


我不知道如何正确使用Zend Framework 2中的
escape()
htmlspecialchars()
,以及其他内容。

关于如何使用escape HTML有很多问题,使用
htmlspecialchars()
并不完全是火箭科学,但既然您将其范围限定在ZF2上,让我们尝试使其有用

ZF2包含的类正好适用于这种情况

使用它非常简单:

$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属性的特定方法。此外,请注意传递给转义器的参数应与正在呈现的页面的字符编码匹配。如今,UTF-8基本上是一种安全的选择,但像“ISO-8859-1”这样的其他编码并不少见

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

因此,在您看来,按照您的示例,您应该:

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

关于如何使用escape HTML有很多问题,而使用
htmlspecialchars()
并不是一门非常科学的技术,但是由于您将其范围限定在ZF2上,所以让我们尝试使其有用

ZF2包含的类正好适用于这种情况

使用它非常简单:

$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属性的特定方法。此外,请注意传递给转义器的参数应与正在呈现的页面的字符编码匹配。如今,UTF-8基本上是一种安全的选择,但像“ISO-8859-1”这样的其他编码并不少见

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

因此,在您看来,按照您的示例,您应该:

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