我即将发布一个使用数据库连接存储数据的小工具。问题是:如何阻止人们对我的代码进行逆向工程并让Username
和Password
获得对数据库的访问权限?
对于早期的项目(仅由我自己使用),我将connection-string
定义为我的应用程序中的全局变量。但这非常不安全,因为只需几分钟即可将这个字符串从exe中删除。
也可以颠倒许多混淆代码的方法。
我真的很喜欢提供代码,但我不知道该发布什么。这是关于该理论的更多问题。编码是我自己照顾的部分。
这是我的一个小想法,我不太喜欢这个:
我可以在服务器上放置第二个工具。真正的应用程序将连接到第二个工具,交付数据,第二个数据最终将连接到我的数据库本身。这样连接字符串将存储在第二个应用程序中,没有人可以抓住它。
答案 0 :(得分:1)
事实是,在客户端计算机上存储敏感信息极易受到database
的攻击。您可以查看的建议是应用程序的三层体系结构模型(http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture)。在三层体系结构中,您有表示层(您的应用程序),您的逻辑层(此层将是所有客户端可以访问您的数据库的中心站点),并且您拥有数据库层(服务器)你的数据库在哪里)。使用此体系结构,您可以确保存储和检索的所有数据都来自单一来源和高级别安全性。
在过去(现在仍然如此),程序员必须创建自己的套接字服务器或推进网络编程以开发这样的解决方案,但是Microsoft开发了一个名为Windows Communication Foundation
的工具({{ 1}})消除了编写自己的套接字服务器的痛苦,让您专注于开发自己的实现。但请注意,WCF
默认是安全的,但是没有理由不研究如何使您的产品能够抵御黑客(比如知道您将使用哪种协议,您将使用哪些安全措施) (传输与消息等),在客户端加密数据,以便潜在的病毒不会发现敏感信息等)。在说,WCF
是一个非常优秀的服务,很容易得到一些东西。
WCF
上有一个很好的初学者视频教程:https://www.youtube.com/playlist?list=PLhq7kqloVlM-bI9W_7iDZhObAeyrFt1y_
以下是链接:https://www.youtube.com/user/JesseDietrichson/featured