寻找数据访问层保护建议

时间:2010-02-27 21:36:03

标签: c# .net sql

我目前正在参与一个非常庞大的供应链管理软件系统,该系统位于我受雇的地方。系统的UI目前仅通过ASP.NET实现,但我们也在开发Windows Forms和Windows Mobile Compact界面。我们在分离界面,业务和数据访问层方面有一个非常好的设置,因此我们已经成功地跨多个平台共享。但是,当我们将基于客户端的接口分发给客户时,我们会遇到一些安全问题。

我们的一些数据访问库随可执行文件一起分发。只需在记事本中打开已编译的程序集即可查看其中的任何查询。

例如,假设我们有一个名为“User”的类,它将方法“GetName”实现为:

  

从用户中选择名称,其中id = @id

问题是,任何热衷于在记事本中打开已编译程序集的人现在都可以看到列名和表名。当然,他们可能无法访问这些内容,但如果我不需要,我仍然不会公开架构。

以上只是一个简单的例子。我是否错误地考虑了思考过程,还是有办法保护我们的查询? (我宁愿不使用存储过程来处理所有事情。)

我已经考虑过强制数据访问层是远程的,并通过Web服务从业务层进行通信,以便所有与数据库相关的信息都在我们的内部服务器上,我们可以更容易地保护它。

1 个答案:

答案 0 :(得分:2)

如果你想从src中删除sql,那么你正在寻找像Web服务这样的另一层。虽然它隐藏了你的sql,但服务本身现在必须是公共的。因此,虽然那些偷看的人看不到db模式,但他们仍然可以看到数据布局。

Web服务允许的是更简单的方式来进行架构更改,因为现在您只需要确保数据输出始终相同。它还允许您使用模式的dbs移动,重命名和/或执行其他维护。最后,它最好允许您在本地而不是通过网络池数据库连接,并在服务器上运行更多处理。