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);
在 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);