Linq и SQL-инъекция в моем основном проекте asp.net, который я изучаю - PullRequest
0 голосов
/ 26 октября 2019

Я изучаю ядро ​​asp.net и использую некоторое количество Linq для перехода на страницу просмотра бритвы.

На странице есть текстовое поле для поисковых терминов, а также раскрывающийся список выбора категории.

В приведенном ниже коде показаны некоторые части, из которых состоит фактический поиск. Являются ли разделы, закомментированные как уязвимые, плохим способом сделать что-то и открытое для SQL-инъекций?

Если так, какой способ лучше? чтобы справиться с этим?

Я смотрел на такие вещи, как FromSQL и т. д., но я не хочу использовать это, если мне не нужно.

// For search textbox and search category DDL in web page
[BindProperty(SupportsGet = true)]
public string SearchString { get; set; }

[BindProperty(SupportsGet = true)]
public string CategoryString { get; set; }


// In my page's .cs file .....
List<KnowledgeBaseListVM> kblist = new List<KnowledgeBaseListVM>();

if (!string.IsNullOrEmpty(CategoryString) || !string.IsNullOrEmpty(SearchString))
{

    // _context is my db context
    var q = (from kb in _context.KnowledgeBase
             join c in _context.KnowledgeBaseCategory on kb.CategoryId equals c.Id
             orderby kb.Title
             select new
             {
                 kb.Id,
                 kb.DateCreated,
                 kb.Title,
                 Category = c.Title,
                 kb.Text,
                 kb.CategoryId
             }).ToList();


    // SearchString - Vulnerable?
    if (!string.IsNullOrEmpty(SearchString))
    {
        q = q.Where(s => s.Category.ToLower().Contains(SearchString.ToLower()) || s.Title.ToLower().Contains(SearchString.ToLower()) || s.Text.ToLower().Contains(SearchString.ToLower())).ToList();
    }

    // Search Category - Vulnerable?
    if (!string.IsNullOrEmpty(CategoryString))
    {
        q = q.Where(s => s.CategoryId == int.Parse(CategoryString)).ToList();
    }

}

S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...