我正在尝试使用ASP.NET API构建一个易受SQL注入攻击的网站(仅供教育目的)。为此,我想使用预先准备好的SQL查询调用FromSql
方法,如下所示:
String query = "SELECT * FROM users WHERE email = '"+email
+"' AND password = '"+password+"'";
return RepositoryContext.Users.FromSql(query).FirstOrDefault();
但是这段代码不会编译,因为FromSql
需要一个FormattableString
而不是String
。我收到以下错误信息:
错误 CS1503 参数2:无法从“string”转换为“System.FormattableString”
以下代码可以编译,但是这段代码将不再容易受到SQL注入攻击,因为Entity Framework将执行准备好的SQL查询并将电子邮件和密码转换为SQL查询参数:
return RepositoryContext.Users.FromSql(
$"SELECT * FROM users WHERE email = {email}
AND password = {password}").FirstOrDefault();
有没有一种方法可以将 String
转换为 FormattableString
?
谢谢您的帮助。