Mejor patrón para AllowUnsafeUpdates

Hasta ahora, en mi investigación, he visto que no es aconsejable establecer AllowUnsafeUpdates en la operación de solicitud GET para evitar las secuencias de comandos entre sitios. Pero, si se requiere para permitir esto, ¿cuál es la manera correcta de manejar la situación para mitigar cualquier exposición?

Esta es mi mejor primera suposición sobre un patrón confiable si es absolutamente necesario permitir las actualizaciones web o del sitio en una solicitud GET.

¿Mejores prácticas?

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

        }
    }

Se agradece la retroalimentación sobre el mejor patrón.

Respuestas a la pregunta(6)

Su respuesta a la pregunta