Преобразование строки в FormattableString в Entity Framework
Я пытаюсь создать веб-сайт, уязвимый для SQL-инъекций (в образовательных целях) с помощью ASP.NET API. Для этого я хотел бы вызвать заранее подготовленный SQL-запрос как таковой:
String query = "SELECT * FROM users WHERE email = '"+email
+"' AND password = '"+password+"'";
return RepositoryContext.Users.FromSql(query).FirstOrDefault();
Но этот код не будет компилироваться какFromSql
ожидает , а не . Я получаю следующее сообщение об ошибке:
Ошибка CS1503. Аргумент 2: невозможно преобразовать из «строки» в «System.FormattableString».
Следующее будет скомпилировано, но тогда этот код больше не будет уязвим для SQL-инъекций, поскольку Entity Framework выполнит подготовленный SQL-запрос и преобразует адрес электронной почты и пароль в параметры SQL-запроса:
return RepositoryContext.Users.FromSql(
$"SELECT * FROM users WHERE email = {email}
AND password = {password}").FirstOrDefault();
Есть ли способ преобразоватьString
кFormattableString
?
Спасибо за помощь.
1 ответ
использование System.Runtime.CompilerServices;
...
var s = "...";
var fs = FormattableStringFactory.Create(s);