Злоупотребление API — проблема уязвимости системы безопасности Приложение MVC

Инструмент Fortify сообщил о злоупотреблении API — массовое назначение: небезопасная конфигурация связывателя для приведенного ниже кода. Я ценю чью-то помощь в выявлении недостатков безопасности в приведенном ниже коде. Приведенный ниже код используется для создания сеанса приложения в глобальном контексте. Есть ли у нас какой-либо другой лучший подход для достижения того же сеанса со стандартом OWASP?

public class SessionKeys
{
    public const string AppHistory = "my_History ";       
}

public class AppSession : IAppSession
{
    public AppHistoryViewModel AppHistory 
    {
        get
        {
            AppHistoryViewModel appHistory  = null;

            if ((HttpContext.Current != null) && (HttpContext.Current.Session[SessionKeys.AppHistory] != null))
            {
                appHistory  = HttpContext.Current.Session[SessionKeys.AppHistory] as AppHistoryViewModel;
            }

            return appHistory;   
        }
        set
        {
            if (HttpContext.Current != null)
            {
                HttpContext.Current.Session[SessionKeys.AppHistory] = value;
            }
        }
    }
}

[UserProfileAuthorizationFilter(Order = 0)]
public class MyController : BaseController
{
    #region Setter Injection

    private IAppSession _appSession;

    public IAppSession AppSession
    {
        get { return _appSession ?? (_appSession = new AppSession()); }
        set
        {
            if (_appSession == null)
            {
                _appSession = value;
            }
        }
    }

    #endregion
}

Благодарю вас!!


person Sayeed Ahmed    schedule 13.06.2021    source источник
comment
См. следующее: cheatsheetseries.owasp.org/cheatsheets/   -  person jdweng    schedule 14.06.2021
comment
andrewlock.net/   -  person Dmitry Bychenko    schedule 14.06.2021


Ответы (1)


После удаления свойства setter из AppHistoryViewModel это сработало.

Я удалил приведенный ниже набор строк из кода, и я больше не вижу уязвимости в отчете sonarQube.

 set
        {
            if (HttpContext.Current != null)
            {
                HttpContext.Current.Session[SessionKeys.AppHistory] = value;
            }
        }
person Sayeed Ahmed    schedule 17.06.2021