Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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
C# 为什么有些人在发布asp.net页面时会将其转换为HTML页面?_C#_Asp.net_Html_Security - Fatal编程技术网

C# 为什么有些人在发布asp.net页面时会将其转换为HTML页面?

C# 为什么有些人在发布asp.net页面时会将其转换为HTML页面?,c#,asp.net,html,security,C#,Asp.net,Html,Security,我刚刚被告知,我可能要从事一个项目,我将使用ASP.NET3.5和C#。我们团队中有人说,我们应该在发布网站时将所有页面更改为HTML。因此,我们将使用www.test.com/Page.html而不是www.test.com/Page.aspx 所以我想知道的是: A.)如何做到这一点,使用什么工具 B.)为什么要这样做,我们能从中获得什么好处?(被告知要防止黑客获取) 建议这样做吗 提前感谢。B)我能想到这样做的唯一原因是隐藏您正在使用的服务器端技术的明显标识符。然而,这是默默无闻的安全,永

我刚刚被告知,我可能要从事一个项目,我将使用ASP.NET3.5和C#。我们团队中有人说,我们应该在发布网站时将所有页面更改为HTML。因此,我们将使用www.test.com/Page.html而不是www.test.com/Page.aspx

所以我想知道的是:

A.)如何做到这一点,使用什么工具

B.)为什么要这样做,我们能从中获得什么好处?(被告知要防止黑客获取)

建议这样做吗

提前感谢。

B)我能想到这样做的唯一原因是隐藏您正在使用的服务器端技术的明显标识符。然而,这是默默无闻的安全,永远不应该是唯一和主要的安全措施。如果你出于审美或其他原因想这么做,没关系,但不要指望它能阻止一个坚定的黑客

A)您可以通过更改Web.config来实现:

<system.web>
    <httpHandlers>
        <add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
    </httpHandlers>
</system.web>

我是一家大型汽车网站的承包商,我们被要求根本不要发布任何文件扩展名,因为这家公司(一家非常大的新闻机构)不想让投资者和供应商看到一种技术高于另一种技术——这纯粹是一种商业设计,这不是一个技术上的尝试,也不是一个默默无闻的安全尝试。

a:通过ASP.NET上的MVC,您可以创建一个路由,您可以将它映射到您想要的几乎任何类型的URL

 routes.MapRoute("Route1", "Foo/{Cat}/{SubCat}/{Record}.html", new { controller = "Foo", action = "Record" });

C) 没有建议支持或反对它,但在将*.html传递给ASP.NET时应小心,因为当您实际需要的只是静态html页面(无服务器端处理)时,它将导致额外的开销。

这可能是由于SEO原因。谷歌不喜欢这样的URL:

longurl.com/index.aspx?id=1&time=3&this=2
这可能是因为团队成员希望以不同的方式发送url,以便谷歌更有可能接收它们

longurl.com/index/1/3/2.html
别问我谷歌为什么喜欢这个,但它确实喜欢。如果我有刺虽然,它喜欢知道的内容是有。顶部链接显然是动态生成的,并不总是存在

当然,如果这是针对一个内部web应用程序,那么可能是为了尝试防止用户弄乱URL字符串并破坏网站

编辑:总之,正如上面的答案所示,这可能有不止一个原因。然而,黑客的安全性似乎是一个相当糟糕的原因。如果代码足够健壮,那么无论URL的形式如何,它都是安全的。

B)C)

如果url是公开的,您应该输入url的相关信息,以及在未来10-20年(或更长时间)内不太可能改变的内容,这将是:

  • 关于当前页面的简短描述
随着时间的推移,这些情况可能会发生变化:

  • ids-如果将数据移植到其他系统
  • .html.php.jsp.do.aspx,如果您更改了技术
  • /控制器/view/main,如果您重新安排站点的结构

如果URL是私有的,那么你如何构造它们并不重要,只要它有助于你的应用程序。

一般来说,我觉得模糊性安全在整个安全方案中确实占有一席之地。@Howard-你说得对,它确实占有一席之地,所以我的回答可能有点过于强烈了。但根据我的经验,一些开发人员太容易依赖模糊性作为唯一的安全措施,这确实是一种糟糕的做法。@Howard-更新了我的答案以回应您的评论。Google确实在关键字相关性方面对查询字符串参数的估值低于路径,但是扩展并不重要,除非它是搜索查询的一部分。如果进行路由,则最好完全跳过扩展,除非提供多种内容类型(
../page.json
../page.html
../page.xml
,等等)。但即使路由不同的类型,也不一定要专门放置扩展。例如:longurl.com/blog/rss2/longurl.com/blog/atom/longurl.com/pagename/json/都可以很好地解释它们所做的或将产生的结果。不过,我可能仍然更喜欢使用扩展名来划分类型,因为1)我更喜欢将页面表示为路径中的文件,而不是目录;2)如果页面具有相对URL,则将路径嵌套一级可能会导致问题。+1:非常有效的点。URL应该唯一地标识内容,而不是其他内容。但是在20年后,我想我们不会像今天这样看到URL,但现在,让我们假设我们看到=)+1如果我在看一个关于elephans的网页,它到底为什么应该以“.aspx”或“.html”结尾,这与大象无关?我的网页中还有一些其他项目,我必须删除它们吗?不,这会将处理程序添加到其他项目中。*。aspx页面仍然可以工作,但您可以将它们命名为*.html,它们仍然可以工作。让我把这个问题弄清楚。你是说我必须在Web.config中包含该处理程序。然后转到我的页面,将我的page.aspx重命名为page.html?
longurl.com/index/1/3/2.html