使用 EF Core 将代码作为文本存储在数据库中是否安全

Is it safe to store code as text in a database with EF Core

提问人:arc-menace 提问时间:12/1/2020 最后编辑:arc-menace 更新时间:12/1/2020 访问量:127

问:

我正在为一个大学课程的期末项目开发一个网络应用程序。该项目围绕着保存用户输入的代码片段展开(实际上这是整个前提)。我将 EF Core 用于代码优先数据库。代码存储在字符串中。我知道,每当您收到来自用户的输入文本时,您都容易受到 SQL 注入的攻击,我不禁觉得,如果用户输入要保存的 SQL 代码,这个问题会更加复杂(哎呀,他们可能想要保存 SQL 注入攻击)。

我不是在处理原始 SQL 查询,而是在处理 DbConext 和 Linq 查询,所以我认为我不必担心修复这些问题,只需进行输入清理。如何确保用户输入的任何文本都安全存储并且不会搞砸我的数据库?仍在学习。提前致谢。

编辑:

下面是 Snippet 类

public class Snippet : DatabaseEntity
{
    public int SnippetId { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public ICollection<Tag> Tags { get; set; }

    public Snippet() : base() { }
}

这是我用来保存片段的代码

if(ModelState.IsValid)
{
    context.Snippets.Add(snippet);
    context.SaveChanges();
    return RedirectToAction("Dashboard");
}

我主要关心的是确定这是否正常,或者我是否需要更多地保护自己。

C# 数据库 entity-framework-core sql-injection

评论

0赞 Dale K 12/1/2020
您需要向我们展示用于保存用户输入的所有代码,以及用于执行其输入的所有代码。许多课程可以避免注入,因此在看不到您在做什么的情况下,我们无法真正发表评论。
1赞 Thom A 12/1/2020
这也取决于你打算用这些片段做什么;如果您不打算执行它们,并且正在通过参数化查询插入和检索它们,那么它们不会造成任何危险。当然,如果您要插入数据,然后为用户提供检索代码并执行代码(在实例上?)的选项,那就是您遇到问题的时候。
0赞 arc-menace 12/1/2020
@DaleK我用一些代码更新了问题
0赞 arc-menace 12/1/2020
@Larnu 我只使用代码作为文本执行 CRUD 操作。不执行
3赞 Nick.Mc 12/1/2020
如果您不执行代码,则没有问题。这只是数据

答: 暂无答案