Я сделал возможность сортировать содержимое страницы динамически через две строки запроса и динамический LINQ. Сегодня я только что понял, что могу использовать это непреднамеренно.
Назначение
Обычно я предоставляю параметры строки запроса Sort.Field=SomeField
и Sort.Direction=desc
, и это позволяет сортировать в коде с помощью query.OrderBy(field + " " + direction)
.
Unintended
Сегодня я узнал, что могу предоставить что-то вроде Sort.Field=Modified.On != null ? Modified.On : Created.On
и Sort.Direction=desc
.
Быть способным сделать это само по себе не опасно, но мне стало немного не по себе от того, что возможно с Dynamic LINQ.
Существуют ли какие-либо другие проблемы с безопасностью, которые могут возникнуть у меня из-за подобных инъекций?
Примечание
Я читал этот вопрос / ответ , но это, кажется, больше нацелено на экранирование символов, где меня беспокоит то, на что способна динамическая функция LINQ OrderBy
.