Безопасная реализация Page.IsPostBack?

После моего предыдущего вопроса о том, является ли реализация ASP.net Page.IsPostBack по умолчанию безопасной (это не так; ее можно подделать ... HTTP-глагол даже не обязательно должен быть ПОСТ!), - подумал я; конечно должен быть лучший способ реализовать это? Можем ли мы придумать реализацию Page.IsPostBack, которая, если она верна, почти гарантированно укажет, что страница является фактической обратной передачей ASP.net? Это важно, если кто-то хочет выполнить проверку безопасности только один раз (например, будет ли отображаться какой-либо контент в зависимости от роли (ролей) пользователя), и хочет сделать это, только если мы НЕ имеем дело с обратной передачей ASP.net .

Мои первые мысли о том, как это сделать, - это реализовать проверочный код в свойстве, поэтому я могу написать что-то вроде этого внутри Page_Load :

if (!_isPostBack)
{
    // Do security check
    if (userIsNotAuthorized)
    {
        btnViewReports.Visible = false;
        btnEditDetails.Visible = false;
        // etc.
    }
}

Есть ли способ надежно реализовать _isPostBack ? Возможно, сохранить в ViewState что-то, что было бы сложно или невозможно использовать для подделки обратной передачи? Случайная строка?

5
задан Community 23 May 2017 в 10:34
поделиться