使用不同的转义方法


8

我注意到类vendor/magento/framework/Escaper.php,其中包含一些(主要是)模板内部使用的有用的安全方法。其中一些很常见(escapeHtml()),但其中一些很难遇到。

  1. 什么方法escapeXssInUrl()真正起作用?
  2. 如果是方法escapeJsQuote()-在哪里可以找到这些引号?仅内联js模板?
  3. 当应使用所有方法时(实践示例),有人对它有清晰的解释吗?
  4. 是什么之间的差异escapeUrl()escapeXssInUrl(),如果第二个赠款我们更好的安全性,为什么不总是使用第二个,而不是仅逃逸HTML字符?
  5. escapeQuote()应该用于例如在<div value="<?php echo[[here?] 这样的情况下回显某些变量$value?>"></div>

Answers:


3

安全性的大多数功能可防止XSS攻击。

escapeXssInUrl()方法Remove javascript:vbscript:data:从网址话语,并使用类似

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1您可以使用$this->jsQuoteEscape ($item->getName());Mahento 2 来转义javascript中的引号,也可以使用escapeJsQuote

escapeUrl() 实际上利用带有推荐参数的htmlspecialchars来转义HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

您可以通过Magento 2 官方文档找到更多信息。


您能分辨出escapeUrl()和之间的区别escapeXssInUr()l吗?值得注意的是The upcoming release of Magento 2.2 will deprecate these functions. Please check back on this page after the 2.2 release for updated documentation on new escape functions.
Bartosz Kubicki

3

DevDocs中有一个有关模板安全性的有用条目: 针对XSS攻击的安全性措施

Re escapeXssInUrl:该函数在内部进行加号escapeUrl调用。Magento也在内部使用。escapeXssInUrlescapeHtmlescapeUrl

确保一旦Magento 2.2签出新的转义功能。即将推出,因为将会有新的出现:

Magento 2.2即将发布的版本将弃用这些功能。

请在2.2发行版之后重新查看此页面,以获取有关新转义功能的更新文档。

您可能也有兴趣在这里查看我的介绍:安全的输入和输出处理-2016年罗马尼亚Magento会议


实际上,我已经看过您对意大利法师巨人队的训练,我想澄清一些信息,这就是问题的原因之一:)! youtube.com/watch?v=TBSr5Esb-8M我已经注意到了这也是我也注意到了escapeXssInUrl()-所以我应该使用escapeUrl()insted吗?“ Eav Backedn验证规则”-我猜它们只是自动使用,我已经在使用它们了吗?还是应该在添加了ar的地方实现它们?
Bartosz Kubicki

1
我认为这是更好地使用escapeUrlescapeXssInUrl,因为这是内部调用:github.com/magento/magento2/blob/...
安娜Völkl

我没有注意到-是的!
Bartosz Kubicki
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.