You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Entity Framework中如何将String转换为FormattableString?

解决方案

方法1:使用FromSqlRaw直接执行拼接后的SQL

EF Core提供了FromSqlRaw方法,它直接接受普通字符串类型的SQL语句,不会对内容做参数化处理,正好满足你需要的SQL注入演示场景:

string query = "SELECT * FROM users WHERE email = '" + email + "' AND password = '" + password + "'";
return RepositoryContext.Users.FromSqlRaw(query).FirstOrDefault();

方法2:手动构造FormattableString(适配FromSql方法)

如果你坚持要使用FromSql方法,可以通过FormattableStringFactory手动创建FormattableString实例,将拼接好的完整SQL作为格式字符串,参数列表设为空数组,这样EF不会进行参数化,直接执行原始SQL:

using System.Runtime.CompilerServices;

string query = "SELECT * FROM users WHERE email = '" + email + "' AND password = '" + password + "'";
FormattableString fs = FormattableStringFactory.Create(query, Array.Empty<object>());
return RepositoryContext.Users.FromSql(fs).FirstOrDefault();

⚠️ 注意:以上代码仅用于教学演示SQL注入风险,绝对禁止在生产环境中使用,会导致严重的数据库安全漏洞。

内容的提问来源于stack exchange,提问作者CSNooB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 04:50:18