在以HTML格式呈现之前需要转义此行:
$this->view->zipcode = $this->getRequest()->getParam('zipcode','');
之前我没有使用过ZF2,我想正确escape
这一行来保护我的网站免受XSS攻击。
我不知道如何在Zend Framework 2中正确使用escape()
,htmlspecialchars()
和其他人。
答案 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);