繁体   English   中英

如何进行服务器端C#SQL验证

[英]How to do Server-Side C# SQL Verification

我见过许多例子使用这样的东西,这是客户端身份验证:

bool legitlogin = val_log(username, password);
if (legitlogin)
 {
   Form2 objFrmMain = new Form2();
   this.Hide();
   objFrmMain.ShowDialog();
   this.Close();
   return;
 }

但是所有程序破解者必须做的只是将if语句更改为

bool legitlogin = val_log(username, password);
if (!legitlogin)
 {
   Form2 objFrmMain = new Form2();
   this.Hide();
   objFrmMain.ShowDialog();
   this.Close();
   return;
 }

然后他们可以在C#中重新编译和共享程序的破解版本。 我知道有混淆和所有,但这没有提供足够的保护。

那么什么是一个策略可以用来不在客户端内部进行检查,而是让服务器进行检查?

在此示例中,服务器是MySQL服务器。

让你明白正确的混淆

好吧,在给你任何答案之前让我澄清一下:现在,就.NET编程而言,我们已经消灭了封闭源程序和开源程序之间的边界:开源解混淆器,不断发展的社区,越来越活跃的成员等等。 所以不仅任何黑客都能做到这一点:

bool legitlogin = val_log(username, password);
if (!legitlogin)
  {
    Form2 objFrmMain = new Form2();
    this.Hide();
    objFrmMain.ShowDialog();
    this.Close();
    return;
 }

但它们也只能占用代码中有趣的部分并执行此操作:

Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();

简而言之,他们可以做任何他们想做的事。 我记得论坛上有一个老破解者破解了一个程序并使用Code-Cave技术感染了它,这很难通过Olly / ASM来实现,但就.NET而言相当容易,例如着名的开源反编译器DnSpy甚至可以让你在C#语法级别编辑编译文件! 见截图 )。

总而言之,你不能安全。

纯粹的解决方案

如上所述,你可以阻止黑客使用强混淆器对你的软件进行反编译/去混淆,这些混淆器在市场上是一种新的,它们的构建是为了满足更高程度的保护:

  1. 如果你没有钱= ConfuserEx (自定义它很容易,因为它是开源的)
  2. 如果你有钱= BabelforNetEazfuscator
  3. 如果你确实有钱但只有一点= NetGuard.IO

这3个产品是为解决难题而制造的,并且主要是克制你的黑客:)

暂无
暂无

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

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