我是 asp net 的新手,我需要询问从我的客户端运行查询到 asp net 然后到 sql server 的最安全方法。
到现在为止我使用的第一个选项,我从客户端创建查询,例如
"insert into customers (name) values('john')"
在 asp net 中,我只是从客户端获取我的字符串并执行。
Inside Post method:
//Here i am getting query from client:
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(queryFromClient,connection);
cmd.ExecuteNonQuery();
我正在寻找使我的查询更安全,如果我将任何注入或黑客入侵我的服务器,有人可以轻松发送他想要的任何查询,删除数据库或其他任何东西......所以我正在寻找一种方法来防止这种情况发生。
如果您从客户端接收整个查询,这本质上是不安全的,因为客户端可能会拦截请求并将它们发送到您的 Web API 的查询更改为任何内容!
为了防止这种情况,您应该编写一个静态类型的查询以准备从您的客户端接收参数,例如,如果您的 Web API 中有一个方法可以将一个新人插入到您的数据库中,那么这段代码就足够了,您可以通过Web api 的人名。
string q = "insert into persons (name) values(@name)"
SqlCommand cmd = new SqlCommand(q, connection);
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "james";
上面的这个方法参数化你的 SQL 查询,防止 SQL 注入。
为避免进行此类工作,Microsoft 发布了一个名为Entity Framework 的框架,它为您处理所有这些,并在快速构建安全的 Web api 时使您的生活变得更加简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句