Лучший шаблон для AllowUnsafeUpdates

До сих пор в своем исследовании я видел, что неразумно устанавливать AllowUnsafeUpdates в операции GET-запроса, чтобы избежать межсайтового скриптинга. Но, если это необходимо, как правильно справиться с ситуацией, чтобы смягчить воздействие?

Вот мое первое предположение о надежном шаблоне, если вам абсолютно необходимо разрешить обновления веб-сайтов или сайтов по запросу GET.

Лучшая практика?

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

        }
    }

Отзывы о лучших шаблонах приветствуются.

Ответы на вопрос(6)

Ваш ответ на вопрос