Melhor padrão para AllowUnsafeUpdates

Até agora, na minha pesquisa, vi que não é aconselhável definir AllowUnsafeUpdates na operação de solicitação GET para evitar scripts entre sites. Mas, se for necessário permitir isso, qual é a maneira correta de lidar com a situação para mitigar qualquer exposição?

Aqui está o meu primeiro palpite sobre um padrão confiável, se você absolutamente precisar permitir atualizações do site ou da Web em uma solicitação GET.

Melhor prática?

protected override void OnLoad(System.EventArgs e)
{
    if(Request.HttpMethod == "POST")
    {
        SPUtility.ValidateFormDigest();
        // will automatically set AllowSafeUpdates to true
    }

    // If not a POST then AllowUnsafeUpdates should be used only
    // at the point of update and reset immediately after finished

    // NOTE: Is this true? How is cross-site scripting used on GET
    // and what mitigates the vulnerability?
}

// Point of item update

    using(SPSite site = new SPSite(SPContext.Current.Site.Url, SPContext.Current.Site.SystemAccount.UserToken))
    {
        using (SPWeb web = site.RootWeb)
        {
            bool allowUpdates = web.AllowUnsafeUpdates; //store original value
            web.AllowUnsafeUpdates = true;

            //... Do something and call Update() ...

            web.AllowUnsafeUpdates = allowUpdates; //restore original value

        }
    }

O feedback sobre o melhor padrão é apreciado.

questionAnswers(6)

yourAnswerToTheQuestion