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

今 ClientSide で:

$.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 に答える