К примеру, создали вы в контроллере экшен:
public function actionPage($target = '') {
$get = News::find()->where(['link' => $target])->one();
return $this->render('page', ['target' => $target, 'get' => $get,]);
}
Затем создали страницу, файл
page.php<?php
use yii\helpers\Html;
$this->title = $get->title;
?>
<h1>Hello <?= Html::encode($target) ?></h1>
<p>Welcome to your <?=$get->world;?></p>
<h1><?=$get->header;?></h1>
И вроде всё замечательно, get параметры превосходно передаются, смотришь и радуешься. Но настаёт момент, когда кто-то вручную ввёл другую ссылку, и там где get параметры подставлялись, стало пусто, страница поломалась!!! Раньше, когда я писал самописные сайты, в этих случаях делал редирект для всех введёных внешних ссылок, так что даже если вдруг злоумышленник решит ввести какую-то вредоностную ссылку, его редиректит либо на страницу со списком, либо на ошибку 404 - нет такой страницы! И всё ))
ВОПРОС: как бы это глупо не звучало, подскажите как сделать редирект на yii2, чтобы введёные внешние ссылки приводили к
ошибке неправильных или не существующих get-запросов, дабы избежать xss уязвимости и показа пустых страниц?
В случае с цыфрами, я узнавал число записей из БД, и ставил условие, что если цифра get запроса больше числа записей, редирект на список статей. Отрицательные и строковые get-запросы приводили к 404 странице, и я был спокоен. Можно было бы подобное провернуть и со строковыми данными, создав массив из существующих get-запросов, но тогда xss уязвимость остаётся открытой. Вводи что хочешь.