所以我在这里问了几个问题,并因为使用SQL注入漏洞代码而受到抨击,尽管网站不会在线,但有人建议我无论如何都要修复它,我现在正在尝试这样做。
所以我用下面的代码做了一个测试页面来测试它。
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类型的项目。
发布于 2017-01-26 17:48:10
如果您数据库是EF上下文,则默认参数名称为p0,ie查询应为
var testQuery = "SELECT * FROM Test WHERE date = @p0";
foreach (var c in db.Query(testQuery, date)) ...或者,提供SqlParameter作为第二个参数,而不是普通值
db.Query("... = @p", new SqlParameter('p', date))https://stackoverflow.com/questions/41870222
复制相似问题