【问题标题】:Obfuscation for Asp MVC using SmartAssembly or CryptoObfuscator使用 SmartAssembly 或 CryptoObfuscator 对 Asp MVC 进行混淆
【发布时间】:2015-10-10 07:26:07
【问题描述】:

我对使用 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;
});

【问题讨论】:

    标签: json asp.net-mvc obfuscation crypto-obfuscator


    【解决方案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...
      }
    });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多