我正在使用c#和MySQL开发数据库应用程序,该应用程序用于跟踪员工培训课程。在阅读Stack Overflow中的几个主题之后,我得出结论,我应该为每个应用程序角色创建一个数据库用户。我在该系统中有两种类型的用户:管理员和普通用户。所以U应该在MySQL中创建2个用户,一个管理员可以完全访问数据库,另一个普通用户有一些限制。应该有一个用户名表,包含用户名,密码和密码哈希值。
在应用程序运行期间,我的(c#)应用程序在执行某些操作之前检查某些内容,例如我的应用程序应检查该员工是否已经参加了课程A,然后才允许他参加课程B. 现在是什么阻止用户反向设计我的C#应用程序获取数据库用户名和密码,使用MySQL Workbench连接到数据库并通过例如输入课程B而不首先使用课程A来搞乱数据?
我正在考虑使用存储过程,但是如果所有或大多数处理都进入存储过程,但数据库服务器负载很大,不是吗?
答案 0 :(得分:1)
控制数据库访问的最安全方法是使用当前用户的登录ID。这样,任何人都不可能对用户名和密码进行逆向工程。您可以通过将IntegratedSecurity=yes
放在连接字符串中来完成此操作。
理想情况下,您可以创建两个角色 - admin和normal - 并为每个角色提供所需的权限,然后将每个用户分配给一个角色。但是,似乎MySQL不支持开箱即用的角色(但似乎Google可能有一个类似的扩展名)。如果角色不可用,那么您只需适当地为每个用户分配权限。
存储过程不应包含太多“业务”逻辑,而只包含“数据”逻辑,例如确保数据有效,审计(如果需要)等。我的观点是,SP应该只进行设置操作而不使用游标;但不是每个人都同意我的意见。