简单而人为的例子:
C# 桌面应用程序与 SQL Server 数据库对话。所有订单都存在于订单表中。
应用程序查看、创建和修改订单。在这个例子中 一个用户只能修改他们自己的订单 。
关注点:
如果使用专用 sql 凭据,则存储连接字符串。
即使使用了用户凭据,也可以通过直接通过 Excel 或 Access 连接来绕过应用程序安全性。
解决方案:
仅通过 Web 服务/中间件提供对 SQL 的访问。很好,但在这种情况下不一定可行。
在应用程序某处加密连接字符串。不是非常安全,通过默默无闻的安全。
通过授予对特定存储过程、 View 等的访问权限而不访问实际表来保护数据库。 SP 和 View 考虑了用户的权利/凭证。好可怕。好的,简单的例子(选择用户所在的位置,一旦你在不同的组中介绍用户,经理关系等,就会变得复杂。
备择方案:
你会如何处理这个问题?
谢谢
最佳答案
你的意思是?您不应允许用户直接或使用 Excel 或 Access 连接到 SQL Server。他们不应该知道 sa 或其他密码。
在此之后,您当然可以加密应用程序的某些部分,配置以便没有人可以看到其内容。
我真的有这样的逻辑,即用户只能在应用程序级别修改他/她自己的订单。我猜也可以在存储过程中完成,但这取决于并且应该了解更多关于此的详细信息以建议最佳或最合适的方法。
关于c# - 如何保护 C# 应用程序访问的 sql 服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7902578/