首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何进行服务器端SQL验证

如何进行服务器端SQL验证
EN

Stack Overflow用户
提问于 2017-04-14 06:16:13
回答 1查看 75关注 0票数 1

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

代码语言:javascript
复制
bool legitlogin = val_log(username, password);
if (legitlogin)
 {
   Form2 objFrmMain = new Form2();
   this.Hide();
   objFrmMain.ShowDialog();
   this.Close();
   return;
 }

但是程序破解者要做的就是简单地将if语句改为

代码语言:javascript
复制
bool legitlogin = val_log(username, password);
if (!legitlogin)
 {
   Form2 objFrmMain = new Form2();
   this.Hide();
   objFrmMain.ShowDialog();
   this.Close();
   return;
 }

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

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

在本例中,服务器是MySQL服务器。

EN

回答 1

Stack Overflow用户

发布于 2017-05-08 19:23:55

让你正确地理解混淆

好了,在给你任何形式的回答之前,让我先澄清一些事情:现在,就.NET编程而言,我们已经消除了闭源程序和开源程序之间的边界:开源去混淆器,不断增长的社区,越来越活跃的成员,等等。所以不只是任何黑客都能做到:

代码语言:javascript
复制
bool legitlogin = val_log(username, password);
if (!legitlogin)
  {
    Form2 objFrmMain = new Form2();
    this.Hide();
    objFrmMain.ShowDialog();
    this.Close();
    return;
 }

但它们也只能获取代码中有趣的部分,并执行以下操作:

代码语言:javascript
复制
Form2 objFrmMain = new Form2();
this.Hide();
objFrmMain.ShowDialog();
this.Close();

简而言之,他们可以做任何他们想做的事情。我记得在一个论坛上有一个老黑客,他破解了一个程序,并使用Code-Cave技术感染了它,这是通过Olly / ASM很难做到的,但对于.NET来说相当容易,例如著名的开源反编译器DnSpy甚至可以让你在C#语法级别编辑编译后的文件!(see screenshot here)。

总而言之,你不可能是安全的。

纯粹的解决方案

因此,你可以阻止黑客使用强混淆程序对你的软件进行反编译/反混淆,这些模糊处理程序在市场上是一种新事物,它们的构建是为了满足更高程度的保护:

  1. 如果你没有钱= ConfuserEx (由于它是开源的,定制它很容易)
  2. 如果你有钱= BabelforNetNetGuard.IO

你确实有钱,但只有一点点=

这3个产品是为了解决难题,并将最大限度地克制您的黑客:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43402556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档