对于XSS攻击的安全措施

为了防止XSS问题Magento推荐以下转义输出模板中的规则:


  • 如果方法指示内容已转义,则不要转义: ​​getTitleHtml()​​, ​​getHtmlTitle()​​ (标题已为HTML输出做好准备)
  • 类型转换和PHP函数 ​​count()​​ 不需要逸出 (例如 ​​echo (int)$var​​, ​​echo (bool)$var​​, ​​echo count($var)​​)
  • 单引号的输出不需要转义 (例如 ​​echo 'some text'​​)
  • 无变量双引号的输出不需要转义 (例如 ​​echo "some text"​​)

下面的代码示例说明了模板的XSS安全输出:

<?php echo $block->getTitleHtml() ?>
<?php echo $block->getHtmlTitle() ?>
<?php echo $block->escapeHtml($block->getTitle()) ?>
<h1><?php echo (int)$block->getId() ?></h1>
<?php echo count($var); ?>
<?php echo 'some text' ?>
<?php echo "some text" ?>
<a href="<?php echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml() ?
></a>
<!-- In this example $postData is a JSON string -->
<button class="action" data-post='<?php /* @noEscape */ echo $postData ?>' />
<span class="label"><?php echo $block->escapeHtml($block->getLabel()) ?></span>
<a href="<?php echo $block->escapeUrl($block->getCategoryUrl()) ?>">Some Link</a>
<span class="<?php $block->escapeQuote($block->getSpanClass()) ?>">Product Description</span>