Организация сущности ядро: насколько безопасны выражения от инъекции SQL? [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Организация сущности ядро: насколько безопасны выражения от инъекции SQL? [закрыто]

Сообщение Anonymous »

Я провожу исследование способов предотвращения инъекции SQL при использовании основного ORM Orm Orm. Большинство блогов и источников ссылаются на официальную документацию Microsoft, что лучший способ - это дезинфицировать значения, использовать интерполированные строки и анализировать/проверить пользовательские значения, прежде чем использовать их в запросах. Нашел ответ на мой вопрос о том, насколько безопасно использовать конструкцию дерева выражения. А также, это причина этого поста, потому что я также не нашел никакой проблемы, но я мог бы говорить из -за своей неопытности в этом вопросе. < /P>
Например, это < Strong> небезопасно способ создать SQL-запрос:
public List GetFilteredBlogs(string filterField, string filterValue)
{
List blogs = context.Blogs
.FromSqlRaw($"select * from Blogs where {filterField} = {filterValue}");
return blogs;
}
< /code>
И это будет эквивалентно запросу с использованием конструкции выражения: < /p>
public List GetFilteredBlogs(string filterField, string filterValue)
{
ParameterExpression entity = Expression.Parameter(typeof(Blog));
MemberExpression entityProperty = Expression.Property(entity, filterField);
ConstantExpression valueConstant = Expression.Constant(filterValue);
BinaryExpression equal = Expression.Equal(entityProperty, valueConstant);
LambdaExpression filter = Expression.Lambda(equal, entity);

List blogs = context.Blogs.Where(filter);

return blogs;
}
< /code>
Это очень простой пример, но должен хорошо работать с моим вопросом. Почему это не более широко используется против инъекций SQL, когда необходимы динамические запросы? Я вижу, что это можно злоупотреблять, когда кто -то захочет преобразовать полный запрос SQL в дерево выражения, но при использовании с простыми значениями и конкретными построением запросов я думаю, что может быть даже лучше, чем дезинфицировать или анализировать пользователь, предоставляемые входы.
Я знаю, что в этом примере пользователь может получить доступ к любому столбцу из таблицы блогов, но, допустим, это не имеет значения, или будет защита, для которых столбцы доступны. < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -injection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»