代码之家  ›  专栏  ›  技术社区  ›  Agent Smith

如何使用ZF2防止XSS?

  •  0
  • Agent Smith  · 技术社区  · 7 年前

    在HTML中呈现前需要转义此行:

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

    escape 这条线是为了保护我的网站免受XSS攻击。

    escape() , htmlspecialchars() ,以及Zend Framework 2中的其他内容。

    1 回复  |  直到 7 年前
        1
  •  3
  •   yivi SilverLink    7 年前

    关于如何使用escape 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);