在.NET可执行文件中编辑SQL

时间:2012-03-12 14:03:48

标签: .net sql

我正在开发为.NET 4框架编译的Winforms应用程序。应用程序使用类型化数据集和加密连接字符串访问SQL Server。

出于好奇,我在二进制编辑器中打开可执行文件,发现我能够以纯文本的形式查看数据集中的SQL查询。我担心这会打开安全问题 - 例如,有人将“select * from mytable”更改为“从mytable中删除”。

防止这种情况的最佳方法是什么?关于混淆的普遍共识似乎是“不要打扰”,但这肯定是等待发生的安全噩梦?是否有任何人可以推荐的最佳实践或工具?

2 个答案:

答案 0 :(得分:5)

  肯定这是一场等待发生的安全噩梦

您的可执行文件可以访问的任何内容都可以由用户使用自己的代码完成。

如果您不相信您的用户不要使用数据库,请限制他们的角色/用户在数据库级别可以执行的操作。

您的用户是否应该能够删除数据?如果是这样,他们为什么要编辑您的可执行文件而不是编写自己的代码?如果没有,为什么你允许他们这样做(在数据库级别)开始?

答案 1 :(得分:1)

我想将SQL存储为字符串永远不是处理DB的好方法,但这是一个非主题句。无论如何,恶意用户无法真正更改您的代码,因为.NET程序集应该签名(然后不可修改)。我想这只是一个例子(为什么他们应该将创建表更改为删除表?)。对于本机应用程序(或来自其他未验证位置的SQL代码),情况并非如此。如果您在保存数据库的所有操作都已在... DB端完成,那么您可以开始保护您的程序。如果您真的无法避免在代码中注入纯粹的纯SQL,则必须对程序集进行签名。如果您需要“隐藏”该SQL,您可能会认为将其放入加密的文本资源文件中(但我不认为这是你的情况。)