Refactor HTML.Noopener to HTML.TargetNoopener so that it behaves like HTML.TargetNore...
[htmlpurifier.git] / library / HTMLPurifier / AttrTransform / TargetNoopener.php
blob1db3c6c09ed76e4c40d4d89677e99f2887e14cf0
1 <?php
3 // must be called POST validation
5 /**
6 * Adds rel="noopener" to any links which target a different window
7 * than the current one. This is used to prevent malicious websites
8 * from silently replacing the original window, which could be used
9 * to do phishing.
10 * This transform is controlled by %HTML.TargetNoopener.
12 class HTMLPurifier_AttrTransform_TargetNoopener extends HTMLPurifier_AttrTransform
14 /**
15 * @param array $attr
16 * @param HTMLPurifier_Config $config
17 * @param HTMLPurifier_Context $context
18 * @return array
20 public function transform($attr, $config, $context)
22 if (isset($attr['rel'])) {
23 $rels = explode(' ', $attr['rel']);
24 } else {
25 $rels = array();
27 if (isset($attr['target']) && !in_array('noopener', $rels)) {
28 $rels[] = 'noopener';
30 if (!empty($rels) || isset($attr['rel'])) {
31 $attr['rel'] = implode(' ', $rels);
34 return $attr;