使用 SQLQuery 发送这样的参数可以安全地防止 SQL 注入吗?
var page_param = new SqlParameter("page_param", page);
var pageSize_param = new SqlParameter("pageSize_param", pageSize);
var users = _context!.Database.SqlQuery<UserDTO>($"SELECT u.Id,u.FirstName,u.LastName,u.JoinDate,u.UserName,u.Email,u.EmailConfirmed,u.PhoneNumber,r.Name as Role FROM Users as u inner join UserRoles as ur on u.Id = ur.UserId inner join Roles r on ur.RoleId = r.Id order by u.JoinDate OFFSET {page_param} ROWS FETCH NEXT {pageSize_param} ROWS ONLY ");
编写安全的 SQL 查询
您提供的任何参数值都将自动转换为 DbParameter。
所以,是的,它是安全的。您可以仅传递整数和字符串,而无需使用
SqlParameter
。
请注意,对于此类简单的查询,最好使用 LINQ。