对于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>