diff --git ui/app/controllers/CControllerMenuPopup.php ui/app/controllers/CControllerMenuPopup.php
index c73ad01a22..c953a6d3db 100644
--- ui/app/controllers/CControllerMenuPopup.php
+++ ui/app/controllers/CControllerMenuPopup.php
@@ -594,7 +594,8 @@ class CControllerMenuPopup extends CController {
 						$menu_data['urls'][] = [
 							'label' => $url['name'],
 							'url' => $url['url'],
-							'target' => '_blank'
+							'target' => '_blank',
+							'rel' => 'noopener'.(ZBX_NOREFERER ? ' noreferrer' : '')
 						];
 					}
 				}
@@ -606,7 +607,7 @@ class CControllerMenuPopup extends CController {
 						$url['url'] = 'javascript: alert(\''.
 							_s('Provided URL "%1$s" is invalid.', zbx_jsvalue($url['url'], false, false)).
 						'\');';
-						unset($url['target']);
+						unset($url['target'], $url['rel']);
 					}
 				}
 				unset($url);
diff --git ui/app/partials/configuration.tags.tab.php ui/app/partials/configuration.tags.tab.php
index 203c74ed89..590856262e 100644
--- ui/app/partials/configuration.tags.tab.php
+++ ui/app/partials/configuration.tags.tab.php
@@ -95,7 +95,7 @@ foreach ($data['tags'] as $i => $tag) {
 						(new CUrl('templates.php'))
 							->setArgument('form', 'update')
 							->setArgument('templateid', $templateid)
-					))->setAttribute('target', '_blank');
+					))->setTarget('_blank');
 				}
 				else {
 					$template_list[] = (new CSpan($template['name']))->addClass(ZBX_STYLE_GREY);
diff --git ui/app/partials/hostmacros.inherited.list.html.php ui/app/partials/hostmacros.inherited.list.html.php
index 7f12c8ed89..04f4066cbf 100644
--- ui/app/partials/hostmacros.inherited.list.html.php
+++ ui/app/partials/hostmacros.inherited.list.html.php
@@ -39,7 +39,7 @@ else {
 				->setArgument('action', 'macros.edit')
 				->getUrl()
 			))
-			->setAttribute('target', '_blank');
+			->setTarget('_blank');
 		$link = [' (', $link, ')'];
 	}
 
@@ -138,7 +138,7 @@ else {
 					'templates.php?form=update&templateid='.$macro['template']['templateid'])
 				)
 					->addClass('unknown')
-					->setAttribute('target', '_blank');
+					->setTarget('_blank');
 			}
 			else {
 				$link = new CSpan(CHtml::encode($macro['template']['name']));
diff --git ui/include/classes/helpers/CBrandHelper.php ui/include/classes/helpers/CBrandHelper.php
index 4a54a69689..65e23b5f26 100644
--- ui/include/classes/helpers/CBrandHelper.php
+++ ui/include/classes/helpers/CBrandHelper.php
@@ -122,7 +122,7 @@ class CBrandHelper {
 				(new CLink('Zabbix SIA', 'https://www.zabbix.com/'))
 					->addClass(ZBX_STYLE_GREY)
 					->addClass(ZBX_STYLE_LINK_ALT)
-					->setAttribute('target', '_blank')
+					->setTarget('_blank')
 			]
 		);
 
diff --git ui/include/classes/html/CLink.php ui/include/classes/html/CLink.php
index e5ee3df54d..9b76e6638c 100644
--- ui/include/classes/html/CLink.php
+++ ui/include/classes/html/CLink.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types=1);
 /*
 ** Zabbix
 ** Copyright (C) 2001-2021 Zabbix SIA
@@ -51,8 +51,21 @@ class CLink extends CTag {
 		return $this;
 	}
 
-	public function setTarget($value = null) {
-		$this->attributes['target'] = $value;
+	/**
+	 * Set URL target. If target is "_blank", add "rel" tag and tag values "noopener" and "noreferrer". The "noreferrer"
+	 * depends if it is set to true in defines.inc.php.
+	 *
+	 * @param string $value  URL target value.
+	 *
+	 * @return CLink
+	 */
+	public function setTarget(?string $value = null): self {
+		$this->setAttribute('target', $value);
+
+		if ($value === '_blank') {
+			$this->setAttribute('rel', 'noopener'.(ZBX_NOREFERER ? ' noreferrer' : ''));
+		}
+
 		return $this;
 	}
 
diff --git ui/include/defines.inc.php ui/include/defines.inc.php
index df0253ca8d..9904aa73b5 100644
--- ui/include/defines.inc.php
+++ ui/include/defines.inc.php
@@ -1981,3 +1981,6 @@ define('PROBLEMS_TAG_NAME_NONE',      2);
 define('OPERATIONAL_DATA_SHOW_NONE',         0);
 define('OPERATIONAL_DATA_SHOW_SEPARATELY',   1);
 define('OPERATIONAL_DATA_SHOW_WITH_PROBLEM', 2);
+
+// Allows to set "rel" tag value "noreferer" when setting target="_blank".
+define('ZBX_NOREFERER', true);
diff --git ui/include/views/configuration.item.edit.php ui/include/views/configuration.item.edit.php
index ceb8f11530..b9b122c3a1 100644
--- ui/include/views/configuration.item.edit.php
+++ ui/include/views/configuration.item.edit.php
@@ -742,7 +742,7 @@ if ($data['config']['hk_history_global']  && ($host['status'] == HOST_STATUS_MON
 				->setArgument('action', 'housekeeping.edit')
 				->getUrl()
 			))
-				->setAttribute('target', '_blank')
+				->setTarget('_blank')
 		: _x('global housekeeping settings', 'item_form');
 
 	$keep_history_hint = (new CDiv(makeInformationIcon([
@@ -778,7 +778,7 @@ if ($data['config']['hk_trends_global'] && ($host['status'] == HOST_STATUS_MONIT
 				->setArgument('action', 'housekeeping.edit')
 				->getUrl()
 			))
-				->setAttribute('target', '_blank')
+				->setTarget('_blank')
 		: _x('global housekeeping settings', 'item_form');
 
 	$keep_trend_hint = (new CDiv(makeInformationIcon([
@@ -840,7 +840,7 @@ if (CWebUser::getType() == USER_TYPE_SUPER_ADMIN) {
 		(new CLink(_('show value mappings'), (new CUrl('zabbix.php'))
 			->setArgument('action', 'valuemap.list')
 			->getUrl()
-		))->setAttribute('target', '_blank')
+		))->setTarget('_blank')
 	];
 }
 
diff --git ui/include/views/configuration.item.massupdate.php ui/include/views/configuration.item.massupdate.php
index e93fa42318..babd9bf748 100644
--- ui/include/views/configuration.item.massupdate.php
+++ ui/include/views/configuration.item.massupdate.php
@@ -392,7 +392,7 @@ $item_form_list
 			(new CLink(_('show value mappings'), (new CUrl('zabbix.php'))
 				->setArgument('action', 'valuemap.list')
 				->getUrl()
-			))->setAttribute('target', '_blank')
+			))->setTarget('_blank')
 		]))->setId('valuemap')
 	)
 	->addRow(
diff --git ui/include/views/configuration.item.prototype.edit.php ui/include/views/configuration.item.prototype.edit.php
index dd190ca07d..697ab6ec59 100644
--- ui/include/views/configuration.item.prototype.edit.php
+++ ui/include/views/configuration.item.prototype.edit.php
@@ -754,7 +754,7 @@ $form_list
 		(new CLink(_('show value mappings'), (new CUrl('zabbix.php'))
 			->setArgument('action', 'valuemap.list')
 			->getUrl()
-		))->setAttribute('target', '_blank')], 'row_valuemap'
+		))->setTarget('_blank')], 'row_valuemap'
 	)
 	->addRow(
 		new CLabel(_('Enable trapping'), 'allow_traps'),
diff --git ui/include/views/configuration.item.prototype.massupdate.php ui/include/views/configuration.item.prototype.massupdate.php
index 84a82167d7..18720bf52e 100644
--- ui/include/views/configuration.item.prototype.massupdate.php
+++ ui/include/views/configuration.item.prototype.massupdate.php
@@ -399,7 +399,7 @@ $item_form_list
 			(new CLink(_('show value mappings'), (new CUrl('zabbix.php'))
 				->setArgument('action', 'valuemap.list')
 				->getUrl()
-			))->setAttribute('target', '_blank')
+			))->setTarget('_blank')
 		]))->setId('valuemap')
 	)
 	->addRow(
diff --git ui/include/views/configuration.services.edit.php ui/include/views/configuration.services.edit.php
index a12385b74a..c1a0e2a9e6 100644
--- ui/include/views/configuration.services.edit.php
+++ ui/include/views/configuration.services.edit.php
@@ -126,7 +126,7 @@ $servicesChildTable = (new CTable())
 	->setHeader([_('Services'), _('Soft'), _('Trigger'), _('Action')]);
 foreach ($this->data['children'] as $child) {
 	$childrenLink = (new CLink($child['name'], 'services.php?form=1&serviceid='.$child['serviceid']))
-		->setAttribute('target', '_blank');
+		->setTarget('_blank');
 
 	$servicesChildTable->addRow(
 		(new CRow([
diff --git ui/include/views/configuration.trigger.prototype.edit.php ui/include/views/configuration.trigger.prototype.edit.php
index 98c5cd858a..162ab2fd4d 100644
--- ui/include/views/configuration.trigger.prototype.edit.php
+++ ui/include/views/configuration.trigger.prototype.edit.php
@@ -571,12 +571,12 @@ foreach ($data['db_dependencies'] as $dependency) {
 	if ($dependency['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
 		$description = (new CLink($depTriggerDescription,
 			'trigger_prototypes.php?form=update'.url_param('parent_discoveryid').'&triggerid='.$dependency['triggerid']
-		))->setAttribute('target', '_blank');
+		))->setTarget('_blank');
 	}
 	elseif ($dependency['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
 		$description = (new CLink($depTriggerDescription,
 			'triggers.php?form=update&triggerid='.$dependency['triggerid']
-		))->setAttribute('target', '_blank');
+		))->setTarget('_blank');
 	}
 
 	$row = new CRow([$description,
diff --git ui/include/views/configuration.trigger.prototype.massupdate.php ui/include/views/configuration.trigger.prototype.massupdate.php
index 3b8f9981b0..336f1b6f7c 100644
--- ui/include/views/configuration.trigger.prototype.massupdate.php
+++ ui/include/views/configuration.trigger.prototype.massupdate.php
@@ -109,12 +109,12 @@ foreach ($data['dependencies'] as $dependency) {
 	if ($dependency['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
 		$description = (new CLink($dependency_description,
 			'trigger_prototypes.php?form=update'.url_param('parent_discoveryid').'&triggerid='.$dependency['triggerid']
-		))->setAttribute('target', '_blank');
+		))->setTarget('_blank');
 	}
 	elseif ($dependency['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
 		$description = (new CLink($dependency_description,
 			'triggers.php?form=update&triggerid='.$dependency['triggerid']
-		))->setAttribute('target', '_blank');
+		))->setTarget('_blank');
 	}
 
 	$dependencies_table->addRow(
diff --git ui/include/views/configuration.triggers.edit.php ui/include/views/configuration.triggers.edit.php
index 4164e085ba..6dc348b175 100644
--- ui/include/views/configuration.triggers.edit.php
+++ ui/include/views/configuration.triggers.edit.php
@@ -594,7 +594,7 @@ foreach ($data['db_dependencies'] as $dependency) {
 	$dependenciesTable->addRow(
 		(new CRow([
 			(new CLink($dep_trigger_description, 'triggers.php?form=update&triggerid='.$dependency['triggerid']))
-				->setAttribute('target', '_blank'),
+				->setTarget('_blank'),
 			(new CCol(
 				$discovered_trigger
 					? null
diff --git ui/include/views/configuration.triggers.massupdate.php ui/include/views/configuration.triggers.massupdate.php
index fe0183a79d..13bc3e9b49 100644
--- ui/include/views/configuration.triggers.massupdate.php
+++ ui/include/views/configuration.triggers.massupdate.php
@@ -111,7 +111,7 @@ foreach ($data['dependencies'] as $dependency) {
 	if ($dependency['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
 		$description = (new CLink($dependency_description,
 			'triggers.php?form=update&triggerid='.$dependency['triggerid']
-		))->setAttribute('target', '_blank');
+		))->setTarget('_blank');
 	}
 	else {
 		$description = $dependency_description;
diff --git ui/include/views/general.browserwarning.php ui/include/views/general.browserwarning.php
index 2a05577e76..0432b93c97 100644
--- ui/include/views/general.browserwarning.php
+++ ui/include/views/general.browserwarning.php
@@ -51,24 +51,24 @@
 					<p>New browsers usually come with support for new technologies, increasing web page speed, better privacy settings and so on. They also resolve security and functional issues.</p>
 					<ul>
 						<li>
-							<a target="_blank" href="http://www.google.com/chrome"><div class="<?= ZBX_STYLE_BROWSER_LOGO_CHROME ?>"></div></a>
-							<a target="_blank" href="http://www.google.com/chrome">Google Chrome</a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.google.com/chrome"><div class="<?= ZBX_STYLE_BROWSER_LOGO_CHROME ?>"></div></a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.google.com/chrome">Google Chrome</a>
 						</li>
 						<li>
-							<a target="_blank" href="http://www.mozilla.org/firefox"><div class="<?= ZBX_STYLE_BROWSER_LOGO_FF ?>"></div></a>
-							<a target="_blank" href="http://www.mozilla.org/firefox">Mozilla Firefox</a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.mozilla.org/firefox"><div class="<?= ZBX_STYLE_BROWSER_LOGO_FF ?>"></div></a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.mozilla.org/firefox">Mozilla Firefox</a>
 						</li>
 						<li>
-							<a target="_blank" href="https://www.microsoft.com/en-us/edge"><div class="<?= ZBX_STYLE_BROWSER_LOGO_ED ?>"></div></a>
-							<a target="_blank" href="https://www.microsoft.com/en-us/edge">Microsoft Edge</a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="https://www.microsoft.com/en-us/edge"><div class="<?= ZBX_STYLE_BROWSER_LOGO_ED ?>"></div></a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="https://www.microsoft.com/en-us/edge">Microsoft Edge</a>
 						</li>
 						<li>
-							<a target="_blank" href="http://www.opera.com/download"><div class="<?= ZBX_STYLE_BROWSER_LOGO_OPERA ?>"></div></a>
-							<a target="_blank" href="http://www.opera.com/download">Opera browser</a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.opera.com/download"><div class="<?= ZBX_STYLE_BROWSER_LOGO_OPERA ?>"></div></a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.opera.com/download">Opera browser</a>
 						</li>
 						<li>
-							<a target="_blank" href="http://www.apple.com/safari/download"><div class="<?= ZBX_STYLE_BROWSER_LOGO_SAFARI ?>"></div></a>
-							<a target="_blank" href="http://www.apple.com/safari/download">Apple Safari</a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.apple.com/safari/download"><div class="<?= ZBX_STYLE_BROWSER_LOGO_SAFARI ?>"></div></a>
+							<a target="_blank" rel="noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>" href="http://www.apple.com/safari/download">Apple Safari</a>
 						</li>
 					</ul>
 					<div class="<?= ZBX_STYLE_BROWSER_WARNING_FOOTER ?>">
diff --git ui/include/views/js/configuration.services.edit.js.php ui/include/views/js/configuration.services.edit.js.php
index 0bdbca8c64..b901774ad2 100644
--- ui/include/views/js/configuration.services.edit.js.php
+++ ui/include/views/js/configuration.services.edit.js.php
@@ -72,6 +72,7 @@
 			var url = document.createElement('a');
 			url.setAttribute('href', 'services.php?form=1&serviceid=' + serviceid);
 			url.setAttribute('target', '_blank');
+			url.setAttribute('rel', 'noopener<?= ZBX_NOREFERER ? ' noreferrer' : '' ?>');
 			url.appendChild(document.createTextNode(name));
 
 			td.appendChild(inputServiceId);
diff --git ui/include/views/monitoring.sysmap.edit.php ui/include/views/monitoring.sysmap.edit.php
index 45179414e0..6261b274b4 100644
--- ui/include/views/monitoring.sysmap.edit.php
+++ ui/include/views/monitoring.sysmap.edit.php
@@ -134,7 +134,7 @@ $icon_mapping_link = (new CLink(_('show icon mappings'), (new CUrl('zabbix.php')
 		->setArgument('action', 'iconmap.list')
 		->getUrl()
 	))
-	->setAttribute('target', '_blank');
+	->setTarget('_blank');
 $map_tab->addRow(new CLabel(_('Automatic icon mapping'), $icon_mapping->getFocusableElementId()),
 	[$icon_mapping, SPACE, $icon_mapping_link]
 );
diff --git ui/js/functions.js ui/js/functions.js
index cf78e9015e..e8f8461127 100644
--- ui/js/functions.js
+++ ui/js/functions.js
@@ -831,7 +831,7 @@ function downloadSvgImage($dom_node, file_name) {
 	image.onload = function() {
 		context2d.drawImage(image, 0, 0);
 		a.href = canvas.toDataURL('image/png');
-		a.rel = 'noopener';
+		a.rel = 'noopener' + (ZBX_NOREFERER ? ' noreferrer' : '');
 		a.download = file_name;
 		a.target = '_blank';
 		a.click();
@@ -862,7 +862,7 @@ function downloadPngImage($dom_node, file_name) {
 	var a = document.createElement('a');
 
 	a.href = $dom_node.attr('src');
-	a.rel = 'noopener';
+	a.rel = 'noopener' + (ZBX_NOREFERER ? ' noreferrer' : '');
 	a.download = file_name;
 	a.target = '_blank';
 	a.click();
diff --git ui/js/menupopup.js ui/js/menupopup.js
index 6d5aff3532..2019cbd184 100644
--- ui/js/menupopup.js
+++ ui/js/menupopup.js
@@ -1598,6 +1598,10 @@ jQuery(function($) {
 				if ('target' in options) {
 					link.attr('target', options.target);
 				}
+
+				if ('rel' in options) {
+					link.attr('rel', options.rel);
+				}
 			}
 
 			if (typeof options.clickCallback !== 'undefined') {
diff --git ui/jsLoader.php ui/jsLoader.php
index b096c2f235..9480f108a4 100644
--- ui/jsLoader.php
+++ ui/jsLoader.php
@@ -410,6 +410,8 @@ if (empty($_GET['files'])) {
 		$files[] = 'class.notification.js';
 		$files[] = 'class.notifications.js';
 	}
+
+	$js .= 'ZBX_NOREFERER = '.ZBX_NOREFERER.";\n";
 }
 else {
 	$files = $_GET['files'];