如何使ASP.NET HTML代码不能被客户端(用户)查看

时间:2011-01-05 17:40:25

标签: asp.net obfuscation

我想知道是否有任何标准机制可以保护客户端浏览器中的asp.net asp代码?我发现了一些Windows脚本编码器的引用。问题是,这些脚本编码器是否对源代码后面的aspx和代码进行编码?如果使用Windows脚本编码器对aspx进行编码,那么客户端浏览器如何对其进行解码?他们是否了解编码算法?

或者我们可以控制客户端浏览器(IE,Firefox,Chrome等),以便在加载网站时禁用“任务”菜单中的“查看源”选项吗?

任何指针都将受到赞赏。

6 个答案:

答案 0 :(得分:4)

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

稍微解释一下基础知识:

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

当执行页面请求时,ASP.NET引擎执行服务器端代码,并执行您在.aspx页面中编写的asp标记(例如:<asp:Button runat='server'... />。然后它会吐出HTML代码(这是实际发生的非常简化的版本)。

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

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

答案 1 :(得分:3)

服务器端代码(即代码隐藏页面中的代码,控制器,帮助程序,&lt;%code nuggets%&gt;等)当然永远不会对Web客户端可见。

除非您有明显的安全漏洞,否则您的aspx或查看页面(即.aspx,.cshtml,.vbhtml)文件也不会对Web客户端可见,但所述文件生成的HTML将与任何文件一起显示输出或引用JavaScript。

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

以下是关于混淆JavaScript的问题,这至少会阻碍但不能完全消除用户查看来源的能力:How can I obfuscate (protect) JavaScript?

同样,理论上也可以混淆输出的HTML,但也可能通过一些工作来反转。

答案 2 :(得分:1)

用户无法看到您的服务器端(C#)来源 不可能阻止用户看到您的客户端(HTML和Javascript)来源。

答案 3 :(得分:1)

就javascript而言 - 你唯一可以做的就是obfuscate它在某种程度上使得某人试图理解它毫无价值。

答案 4 :(得分:0)

代码背后的代码都没有发送到客户端,只有渲染的HTML。

无法完全删除客户端查看HTML源代码的功能。你唯一能做的就是混淆你的HTML,让他们更难说出他们在看什么。

如果您进行谷歌搜索,有许多库可以在.net中混淆HTML。

答案 5 :(得分:0)

我真的很困惑,但是......

  1. 如果你关于ASP.NET标记,你不必担心,因为对ASP.NET页面的任何请求都会导致页面被编译(如果它还没有,或者不是缓存),将页面内容呈现为HTML。

  2. 如果您担心人们导航到您的代码背后(例如mysite.com/SomePage.aspx.cs),您不必担心,因为ASP.NET不会提供该内容[除非标准配置有已经改变了。

  3. 如果您担心人们通过FTP访问您的代码,那么我建议您更改编译方法而不是部署源代码。

  4. 我错过了什么吗?