【问题标题】:Best Practice for using Stored Procedures in asp.net for inserting Data在 asp.net 中使用存储过程插入数据的最佳实践
【发布时间】:2009-08-04 15:58:23
【问题描述】:

我想知道是否有人可以给我一个链接,了解如何使用存储过程在 SQL 数据库中插入数据的最佳实践模式。我的意思是,我们应该采取什么程序来确保通过存储过程传递经过验证的数据。

【问题讨论】:

  • 我不明白你的问题。显而易见的答案是,“在使用之前验证数据”,但这太明显了,不是你的意思。请澄清。
  • 在获取数据时表现得好像数据尚未经过验证?
  • 不,我正在验证数据的大小和数据类型。但是,如果一些黑客试图添加一些 javascript 代码或 SQL 代码怎么办。我怎样才能困住那些东西?此外,如果我只使用这个语句输入参数可以吗 cm.Parameters.AddWithValue("@UserID", TxtID.Text.ToString());我只是想知道这些事情是否有好的实践模式。

标签: asp.net database stored-procedures


【解决方案1】:

我建议您在存储过程实现的上方层嵌入任何验证逻辑。通过这种方式,您可以在实施和公开方面拥有更大的灵活性。一个简单的例子是您可以跨多个项目重用验证库。大多数 ORM 库通过在编译时验证适当的类型分配以最简单的形式支持验证。

我还建议您在存储过程的上方层中实现事务逻辑。

【讨论】:

【解决方案2】:

根据您是使用 ORM 还是使用直接数据库访问,有许多不同的方法可以做到这一点。一件事是您应该使用 SqlParameter 对象来创建 SP 参数。有多种方法可以创建具有各种选项的 SqlParameter,但最简单的形式是

 SqlParameter[] prms = new SqlParameter[1];
 prms[0] = new SqlParameter("@userid", "Bob");

【讨论】:

  • 但是,如果他们将 javscript 或 SQL 代码传递到某个文本框中,我该如何捕获它呢?例如,我允许用户写一封电子邮件,并且在发送电子邮件之前我也在数据库中保存了该消息。但我不希望用户/黑客用 SQL 编写功能齐全的代码来破解我的网站或破坏数据。虽然我用的是Sql参数,但是安全吗?
  • 如果使用参数,那么黑客就无法进行SQL注入。
  • 所以这就是我要问的,Cody C 先生的陈述对我来说已经足够了,那么还是我还需要做一些其他的事情?
  • 您应该始终对用户输入进行基本验证,但参数将保护您免受标准 SQL 注入攻击。但是,作为一般规则,所有数据都应在客户端和服务器端进行验证,然后再将其发送到数据库。
猜你喜欢
  • 2010-12-28
  • 2017-01-01
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多