繁体   English   中英

有没有办法阻止我们的应用程序被分析或注入? (C#)

[英]Is there way to prevent our application from being analysed or injected? (c#)

C#程序集有大量的分析器和静态代码分析器。

只是想知道是否有任何方法可以防止被分析,因为它确实让我在被剥离时感到有些紧张。

我搜遍了整个互联网和stackoverflow。 我的奇迹似乎没有。

我得到的只是一些更可怕的标题(抱歉,新用户无法发布超链接,请谷歌他们):

“汇编操作和C#/ VB.NET代码注入”

“如何将托管.NET程序集(DLL)注入另一个进程”

只是我太担心或者是什么?

顺便说一句,有了C#,我们正在为银行的客户建立一个新的winform客户端来进行在线交易。 我们不应该以winform方式执行此操作,还是应该使用其他语言,如Delphi,C ++? 目前我们有一个使用C ++ Builder构建的winform客户端。

如果通过分析你的意思是有人反编译代码并查看它,那么VS Pro及更高版本附带的Dotfucstor就是一个简单的(免费)工具。 有一个更完整的功能(但付费)版本可以做更多。

为防止有人篡改您部署的assmebliles,请使用强名称

哪里有遗嘱,就有办法,无论是托管代码还是原生程序集。 关键是要将重要信息保存在SERVER端并保持对它的控制。

几乎任何应用程序都可以“分析和注入”。 比其他人更多。 这就是为什么你永远不会信任用户输入。 您在服务器端完全验证用户的请求,确保您不会受到缓冲区溢出,sql注入和其他攻击媒介的攻击。

混淆器可以使.NET程序集更难分析。 使用安全密钥对程序集进行强名称可能会使更改代码变得更加困难。 但是,就像数字世界中的其他所有东西一样,有人可以利用漏洞并绕过您实施的任何保护措施。

您需要首先决定要保护的是什么? 混淆器仅用于保护“秘密酱”算法,但攻击者可以简单地提取代码并将其用作黑盒子。 在99%的案例中,混淆器是浪费金钱。 如果攻击者具有物理访问权限,则无法执行任何操作。

如果最终用户使用管理权限运行,那么他们将能够附加调试器,并修改您的代码,包括目标帐户详细信息。 我当地的友好银行给了我一个芯片和密码阅读器,我必须输入目标帐户的最后n位数字,用我的银行卡芯片进行哈希/加密; 然后,我将设备中的代码输入到银行的网络应用程序中,该应用程序也可以在银行的末端进行检查。 这减轻了“中间人”型攻击......

安全性只能在您实际控制访问的系统上实现,甚至不能保证,只能实现。 您必须假设任何未在您控制的系统上执行的代码都会受到损害。 正如Rowland Shaw所说,金融机构的最佳选择是某种物理令牌,它有效地为所有交易添加了一个脱机独特组件,这些交易无法(容易)被攻击者从受损系统运行时提前知道。 即便如此,您应该意识到如果用户计算机遭到入侵并且从该点开始使用他的安全令牌登录,直到会话结束,攻击者可以自由执行用户有权访问的任何操作,但至少在这种情况下,用户更有可能注意到欺诈活动。

暂无
暂无

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

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