如何加密ASP.NET MVC中的URL?

kum*_*mar 4 asp.net asp.net-mvc asp.net-mvc-2

我需要在ASP.NET MVC应用程序中加密URL.

我是否需要在Route Collection中的Global页面中编写代码以加密所有URL?

Geo*_*ker 7

加密URL是个坏主意.期.

你可能想知道我为什么这么说.

我为一家加密其URL的公司申请了一份申请.这是一个webforms应用程序.仅从URL中,几乎不可能分辨出我要引起该问题的代码部分.由于调用webform控件的动态特性,您只需知道软件将要发生的路径.这让人非常不安.

除此之外,应用程序中没有基于角色的授权.这一切都基于加密的URL.如果你可以解密URL(如果它可以被加密,它可以被解密),那么你可以想象输入另一个加密的URL并冒充另一个用户.我不是说这很简单,但可能会发生.

最后,您多久使用一次互联网并查看加密的URL?当你这样做的时候,你内心有点死吗?我做.URL旨在传达公共信息.如果您不希望它这样做,请不要将其放在您的URL中(或者需要对您站点的敏感区域进行授权).

您在数据库中使用的ID应该是可供用户查看的ID.如果您使用SSN作为主键,则应更改Web应用程序的架构.

任何可以加密的东西都可以被解密,因此容易受到攻击.

如果您希望用户只有在获得授权的情况下才能访问某些URL,那么您应该使用[Authorize]ASP.NET MVC中提供的属性.

  • "任何可加密的东西都可以被解密,因此容易受到攻击." 多么令人惊讶的无用的陈述.我同意你的其他意见. (5认同)
  • @George:该声明的含义是什么都不应该被加密; 这显然是荒谬的. (4认同)
  • @乔治:我无法继续与您进行讨论,这已经荒谬了。我会留给你 (2认同)

Ed *_*gne 5

我同意加密整个网址,这是一个非常糟糕的主意。加密网址参数?并不是很多,实际上是一种有效且广泛使用的技术。

如果您真的想加密/解密url参数(一点也不坏),那么请查看Mads Kristensen的文章“ 用于查询字符串加密的HttpModule ”。

您将需要修改context_BeginRequest才能使其适用于MVC。只需删除if语句的第一部分,该语句检查原始url是否包含“ aspx”。

话虽如此,我已经在几个项目中使用了此模块(如果需要,可以使用转换后的VB版本),并且在大多数情况下,它的工作原理很吸引人。

但是,在某些情况下,我遇到了jQuery / Ajax调用无法正常工作的问题。我确信可以对模块进行修改以补偿这些情况。