Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使客户端(用户)无法查看ASP.NET HTML代码_Asp.net_Obfuscation - Fatal编程技术网

如何使客户端(用户)无法查看ASP.NET HTML代码

如何使客户端(用户)无法查看ASP.NET HTML代码,asp.net,obfuscation,Asp.net,Obfuscation,我想知道是否有任何标准机制可用于保护客户端浏览器中的asp.net asp代码?我找到了一些有关Windows脚本编码器的参考资料。问题是,这些脚本编码器是否同时对aspx和源代码进行编码?若aspx是用Windows脚本编码器编码的,那个么客户端浏览器如何解码它呢?他们知道编码算法吗 或者我们可以控制客户端浏览器(如Firefox、Chrome等)在加载网站时禁用任务菜单中的查看源代码选项吗 任何提示都将不胜感激。用户不可能看到您的服务器端(C#)源代码。 无法阻止用户查看客户端(HTML和J

我想知道是否有任何标准机制可用于保护客户端浏览器中的asp.net asp代码?我找到了一些有关Windows脚本编码器的参考资料。问题是,这些脚本编码器是否同时对aspx和源代码进行编码?若aspx是用Windows脚本编码器编码的,那个么客户端浏览器如何解码它呢?他们知道编码算法吗

或者我们可以控制客户端浏览器(如Firefox、Chrome等)在加载网站时禁用任务菜单中的查看源代码选项吗


任何提示都将不胜感激。

用户不可能看到您的服务器端(C#)源代码。

无法阻止用户查看客户端(HTML和Javascript)源代码。

根据定义,网页上生成的HTML代码是公开的。浏览器必须能够访问它才能正确呈现页面。您将找不到可靠的解决方案在浏览器中隐藏“查看源代码”选项

要稍微解释一下基础知识,请执行以下操作:

创建页面时,在.aspx文件中写入标记,在.aspx.cs文件中写入一些c#源代码。c#代码是服务器端代码,这意味着它是在服务器上执行的(与直接在客户端浏览器中执行的javascript相反——客户端)

当执行页面请求时,ASP.NET引擎会执行服务器端代码,并执行您在.aspx页面中编写的ASP标记(例如:
。然后它会输出HTML代码(这是实际发生情况的一个非常简化的版本)

客户端浏览器只会获取HTML(它不会看到C代码,也不会看到用于生成页面的任何asp标记代码)

正如我之前所说,生成的HTML是公开的,并且将始终是公开的。您无法可靠地隐藏它。

服务器端代码(即页面、控制器、帮助程序等中的代码)当然永远不会对web客户端可见

您的aspx或查看页面(即,.aspx、.cshtml、.vbhtml)文件对web客户端也将不可见,除非您存在signficiant安全漏洞,但所述文件生成的HTML以及任何输出或引用的JavaScript都将可见

如果客户端无法读取HTML或JavaScript,web浏览器将如何解析它

下面是一个关于混淆JavaScript的问题,它至少会妨碍但不会完全消除用户查看源代码的能力:


类似地,理论上也可以混淆输出的HTML,但通过一些工作也可能颠倒过来。

没有代码隐藏的代码被发送到客户端,只有呈现的HTML

没有办法完全取消客户端查看HTML源代码的功能。您唯一能做的就是混淆HTML,让他们更难说出他们在看什么


如果你使用谷歌搜索,有很多库可以在.net中混淆HTML。

我真的很困惑,但是

  • 如果您正在关注ASP.NET标记,则无需担心,因为对ASP.NET页面的任何请求都会导致该页面被编译(如果该页面尚未被编译或未被缓存),从而将页面内容呈现为HTML

  • 如果您担心有人导航到您的代码隐藏(例如mysite.com/SomePage.aspx.cs),则无需担心,因为ASP.NET不会提供该内容[除非标准配置已更改]

  • 如果您担心有人通过FTP访问您的代码,那么我建议您更改编译方法,不要部署源代码


  • 我遗漏了什么吗?

    就javascript而言,你唯一能做的就是让别人无法理解它。

    好问题,我希望有人能解释一下它是如何工作的:)+1:当你说服务器端(C#)源代码时,你指的是aspx和cs代码吗?@VoodooChild:我指的是
    .cs
    文件中的所有内容和任何服务器端脚本。谢谢。顺便问一下,你对服务器端脚本的定义是什么?如果有人问你,你会如何定义?谢谢。我们是否可以通过编程控制来禁用浏览器中的“查看源代码”选项。我知道浏览器需要html代码来显示页面,但应该有办法禁用或启用查看源代码选项…@Hugo Migneron:那么服务器端代码就是c代码,当你说“在.aspx页面中执行asp标记”时,这就是人们所说的“服务器端脚本”吗?@Hugo Migneron:另一个问题,有没有关于ASP.NET引擎工作原理的简化答案的推荐链接?@Kishore:我不知道。老实说,如果你能找到一个好的解决办法,我会非常惊讶。试图改变浏览器的行为是非常糟糕的做法,会惹恼人们。浏览器的行为也不同,因此一个可以在一个浏览器上运行的解决方案不会在其他浏览器上运行。@VoodooChild:这篇文章:非常详细地解释了回发时发生的情况。您最感兴趣的部分是“理解页面生命周期”。如果输出的HTML被混淆,那么浏览器如何读取它?浏览器是否知道如何在下载之前解码parse@Kishore:对不起,我应该说得更具体些。HTML必须以一种使人难以阅读和理解的方式进行模糊处理,但不会对浏览器解析HTML的方式产生任何影响。我担心用户会看到aspx页面呈现的HTML代码。我的问题是,我们能否在网页加载到浏览器后立即使用可编程代码禁用浏览器中的“查看源代码”选项。您无法阻止人们查看您网站的源代码。真的吗