Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在使用实体框架的应用程序上执行SQL注入?_C#_Entity Framework_Entity Framework 6_Sql Injection - Fatal编程技术网

C# 是否可以在使用实体框架的应用程序上执行SQL注入?

C# 是否可以在使用实体框架的应用程序上执行SQL注入?,c#,entity-framework,entity-framework-6,sql-injection,C#,Entity Framework,Entity Framework 6,Sql Injection,会被黑客攻击吗 可以在使用EF的应用程序上执行SQL注入吗 如果是这样的话,有人能提供一个完整的例子说明如何做到这一点吗?我在C#中找不到任何特定于EF的内容。取决于它的使用方法。 如果您使用LINQ yes,那么它对SQL注入是安全的,因为它通过SQL参数将所有数据传递到数据库。LINQ查询不是通过使用字符串操作或串联组成的,这就是为什么它们不易受到传统SQL注入攻击的原因。取决于它的使用方式。 如果您使用LINQ yes,那么它对SQL注入是安全的,因为它通过SQL参数将所有数据传递到数据库

会被黑客攻击吗

可以在使用EF的应用程序上执行SQL注入吗


如果是这样的话,有人能提供一个完整的例子说明如何做到这一点吗?我在C#中找不到任何特定于EF的内容。

取决于它的使用方法。
如果您使用LINQ yes,那么它对SQL注入是安全的,因为它通过SQL参数将所有数据传递到数据库。LINQ查询不是通过使用字符串操作或串联组成的,这就是为什么它们不易受到传统SQL注入攻击的原因。

取决于它的使用方式。 如果您使用LINQ yes,那么它对SQL注入是安全的,因为它通过SQL参数将所有数据传递到数据库。LINQ查询不是通过使用字符串操作或连接来组成的,这就是为什么它们不易受到传统SQL注入攻击的原因。

注意以下几点:


如果开发人员使用EF作为包装器,这是很容易做到的 围绕ADO.NET并使用FromSQL。当然,这不是预期的结果 也不是EF的正常使用,但我见过它–Camilo Terevinto

参考:


此外,虽然不是真正的“sql注入”,但由于这样做的目标之一是通过改变原始sql来产生一些意外的结果,从而在某种程度上改变数据,因此您还应该知道

直接从link获取的样本:

您的模型/类别:

public class Person
{
    public int ID { get; set; }
    public string First { get; set; }
    public string Last { get; set; }
    public bool IsAdmin { get; set; }
}
控制器中的某个地方

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Person person)
{
    if (ModelState.IsValid)
    {
        _context.Add(person);
        await _context.SaveChangesAsync();
        return RedirectToAction("Index");
    }
    return View(person);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建(个人)
{
if(ModelState.IsValid)
{
_上下文。添加(人);
wait_context.SaveChangesAsync();
返回操作(“索引”);
}
返回视图(人);
}
如果用户发现此人有“iAdmin” 属性,则可以“overpost”并向HTTP POST和 设置
IsAdmin=true
这里的代码中没有任何东西可以阻止这种情况发生

所以“邪恶用户”甚至不需要计算出
sql注入
来产生一些意外的结果。阅读有关预防方法的文章(例如,
BindAttribute
,查看模型)

Hth.

请注意:


如果开发人员使用EF作为包装器,这是很容易做到的 围绕ADO.NET并使用FromSQL。当然,这不是预期的结果 也不是EF的正常使用,但我见过它–Camilo Terevinto

参考:


此外,虽然不是真正的“sql注入”,但由于这样做的目标之一是通过改变原始sql来产生一些意外的结果,从而在某种程度上改变数据,因此您还应该知道

直接从link获取的样本:

您的模型/类别:

public class Person
{
    public int ID { get; set; }
    public string First { get; set; }
    public string Last { get; set; }
    public bool IsAdmin { get; set; }
}
控制器中的某个地方

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Person person)
{
    if (ModelState.IsValid)
    {
        _context.Add(person);
        await _context.SaveChangesAsync();
        return RedirectToAction("Index");
    }
    return View(person);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建(个人)
{
if(ModelState.IsValid)
{
_上下文。添加(人);
wait_context.SaveChangesAsync();
返回操作(“索引”);
}
返回视图(人);
}
如果用户发现此人有“iAdmin” 属性,则可以“overpost”并向HTTP POST和 设置
IsAdmin=true
这里的代码中没有任何东西可以阻止这种情况发生

所以“邪恶用户”甚至不需要计算出
sql注入
来产生一些意外的结果。阅读有关预防方法的文章(例如,
BindAttribute
,查看模型)


Hth.

如果开发人员使用EF作为ADO.NET的包装器,并使用SQL中的
,这是很容易做到的。当然,这不是EF的预期用途,也不是正常用途,但我已经看到,如果开发人员使用EF作为ADO.NET的包装器,并使用
FromSQL
,这是很容易实现的。当然,这不是EF的预期用途,也不是正常用途,但我见过它。我不认为,
IsAdmin
劫持与SQL注入是一样的,它纯粹是缺乏业务逻辑验证失败和并发控制,xss等。正如我所说的@AkashKava,“这不是真正的SQL注入”。最后,它完成了一些sql注入可以/将要完成的事情,或者像OP所要求的那样“被黑客攻击”…我不认为
IsAdmin
劫持与sql注入是一样的,它纯粹是缺少业务逻辑验证失败和并发控制、xss等。@AkashKava就像我说的,“这不是真正的sql注入”。最后,它完成了一些sql注入可以/将要完成的事情,或者按照OP的要求进行“黑客攻击”。。。