使用 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) 被混淆。
我对使用 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) 被混淆。