繁体   English   中英

加密表单应用程序的连接字符串

[英]Encrypting Connection string for a forms Application

我已经为我的项目创建了一个表单应用程序。 我想在我的网站上托管供用户下载和测试。 因为我使用的是配置管理器,所以必须包含配置文件以及.exe,因为该应用程序有一个后端远程数据库。 当然,我现在才意识到我的连接字符串在那里有目共睹。 我尝试将app.config重命名为web.config,但是当在我的Vista机器上以管理员身份运行时,aspnet_regiis -pef命令仅返回帮助菜单! 即使此命令有效并且我将web.config重命名为app.config,下载后运行该应用程序的计算机也会自动解密连接字符串吗? 因此,总而言之,对于新手来说,解决这种困境的最佳方法是什么? 为什么aspnet_regiis -pef无法运行? 我也查看了有关该主题的其他帖子,但不幸的是,到目前为止,它们对我没有用。

创建用户/特定的连接字符串,或者将所有数据访问包装在某些Web服务中,您可以在其中控制授权。

创建用户特定的连接字符串是最简单的,但是可能会影响数据库费用。 您仍然可以保留一个连接字符串,但是使用Windows身份进行连接。 在这两种情况下,您都必须花费一些精力来确保用户不能做的事情超出允许的范围。

将数据访问包装在Web服务中要容易得多,但是要使其正常工作,还需要进行额外的工作。 也许您可以看看RIA服务 优点是多方面的:您可以控制Web服务中的权限,并且可以减少不必要查询的暴露。

另请注意,即使您在配置文件中加密了连接字符串,任何恶意用户也将能够对其解密。 一个简单的反编译器将突出显示您的解密密钥。

您可以只将加密的连接字符串存储在app.config中,但必须在应用程序中的某个位置包含加密密钥。 因此,这是不安全的,因为每个人都可以反编译应用程序或附加调试器并提取连接字符串。 或监视网络流量。 实际上,现在有一种方法可以防止这种情况的发生-您的应用程序可以执行的任何操作都可以由所有人(可以访问该应用程序)手动完成。

设计中的缺陷在于,应用程序首先需要直接访问数据库。 确保在这种情况下不会损坏数据库几乎是不可能的(除非数据库仅用于读取数据)。 本质上,您将必须在数据库服务器上复制大部分业务逻辑,以确保没有请求序列会破坏状态。

更好的解决方案是仅通过Web服务间接访问数据库。 这使您可以更好,更轻松地实现服务器端验证,甚至每个用户的身份验证和授权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM