向原始 SQL 查询引入任何用户提供的值时,必须注意防范 SQL 注入攻击。 除了验证确保此类值不包含无效字符,请始终使用会将值与 SQL 文本分开发送的参数化处理。
具体而言,如果连接和内插的字符串 ($""
) 带有用户提供的未经验证的值,则切勿将其传递到 FromSqlRaw
或 ExecuteSqlRaw
。 通过 FromSqlInterpolated
和 ExecuteSqlInterpolated
方法,可采用一种能抵御 SQL 注入攻击的方式使用字符串内插语法。
//var vv = await _context.SysRouteDetails.FromSqlInterpolated($"select * from SysRouteDetails").Where(x=> x.SysRouteId == RouteName).ToListAsync();
var vv = await _context.SysRouteDetails.FromSqlInterpolated($"select * from SysRouteDetails where SysRouteId = {RouteName}").ToListAsync();
记录一下,以上两种方式都是安全的