使用 SmartAssembly 或 CryptoObfuscator 对 Asp MVC 进行混淆

Obfuscation for Asp MVC using SmartAssembly or CryptoObfuscator

我对使用 CryptoObfuscator 或 RedGate SmartAssembly 混淆 Asp Mvc 程序集有疑问:

似乎当您使用这些工具之一来混淆程序集时,它们会重命名 classes 的属性,对吗?

所以我认为由于这个操作,我们将无法访问序列化期间来自服务器的 JSON 格式的某些值(我的意思是因为重命名我们无法解析的属性 JSON JS 中正确的对象)

如果这是真的,那么我们如何防止在 JS 中丢失 parseJSON 操作?

让我包含更多详细信息:

考虑这个class结构

public class MyClass
{
   public string FName{get;set;}
   . . .
}
 //SampleController : 
public JsonResult GetJson()
{
  return Json(new MyClass{FName = "Alex"});
}

现在在客户端:

$.ajax({
  url: "/Sample/GetJson",
  context: document.body
}).success(function(data) {
  //this is my problem : can I access to FName or Not?
var fname = jQuery.parseJSON(data).FName;
});

基本上混淆器不要更改return value's Property's names
但是,如果某些混淆器这样做了......您可以通过在 ajax 调用中使用以下内容来简单地完成此操作:

$.ajax({
  url: "/Sample/GetJson",
  dataType: "json"
  success: function(data) {    
    var transformedData = {fname:arguments[0], somethingElse:arguments[1]};
    //or
    var fname = arguments[0];
    //do the rest here...
  }
});

您也可以在“smart assembly”中使用 [DoNotObfuscate] 属性 通过使用它,您可以完全防止 json 结果被混淆(在服务器端)。
其他混淆器也应该有一些(other/same)策略。
我个人使用 CryptoObfuscator,它有一些选项可以防止 (what/where) 被混淆。