SQL注入cshtml

时间:2017-01-26 09:21:59

标签: c# sql razor code-injection

所以我在这里问了几个问题并且因使用SQL注入易受攻击的代码而被烘焙,即使该网站不能上网我仍然被建议修复它#I&# 39;我现在正努力做到。

所以我做了一个测试页来测试它,使用以下代码。

var date = "2017-01-26";

var testQuery = "SELECT * FROM Test WHERE date = @0";
db.Execute(testQuery, date);

到目前为止,只是运行此页面它没有给我任何错误,但可能大约99%的时间我从数据库中选择了一些东西我使用foreach来显示我的数据。

foreach (var c in db.Query(testQuery))
{
    <a>@c.kg</a>
}

通过添加这样的foreach,它给了我一个错误:

A parameter is missing. [ Parameter ordinal = 1 ]

我做错了什么?这甚至是SQL注入安全吗? PS。这不是一个MVC类型的项目。

1 个答案:

答案 0 :(得分:1)

如果您的数据库是EF上下文,则默认参数名称为p0,即查询应为

var testQuery = "SELECT * FROM Test WHERE date = @p0";
foreach (var c in db.Query(testQuery, date)) ...

或者提供SqlParameter作为第二个参数而不是普通值

db.Query("... = @p", new SqlParameter('p', date))