0

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

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

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

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

让我包括更多细节:

考虑这个类结构

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;
});
4

1 回答 1

1

基本上混淆器不会改变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...
  }
});

您还可以在“智能程序集”中使用 [DoNotObfuscate] 属性通过使用它,您可以完全防止 json 结果被混淆(在服务器端)。
其他混淆器也应该有一些(其他/相同)策略。
我个人使用CryptoObfuscator它,它有一些选项可以防止你想要的(什么/在哪里)被混淆。

于 2015-11-23T06:45:52.727 回答