【问题标题】:ASP.NET MVC - Encrypt URL [duplicate]ASP.NET MVC - 加密 URL [重复]
【发布时间】:2012-06-14 16:32:49
【问题描述】:

我正在使用 ASP.NET MVC 3 开发网站,现在我需要加密客户 URL 的 ID。例如:

http://mysite.com/person?id=42

类似的东西:

http://mysite.com/person?id=Dfjhasdfh33kASDG868365çkhg54sdSDFD

它必须是安全的。 当我说安全时,这意味着任何人都很难找到正确的 ID

有没有图书馆可以做到这一点?

许多安全的网络支付,比如贝宝,都使用这种方法: https://paypal.com/br/webscr?info=CNS9tFsVM_tv4c18gHgZ3OMH2zblN7GWDQoyamVF3mzNh7vGDuhiKU3

【问题讨论】:

  • 定义项目的“安全”范围。
  • 试试这个帖子,希望它能回答你的问题stackoverflow.com/questions/6157150/…
  • 这个用户ID代表什么?是当前用户吗?为什么需要安全?如果不加密会发生什么?
  • 当我说安全时,这意味着任何人都很难找到正确的 ID。
  • 是什么让您的长 ID 比数字更安全?这听起来像是通过默默无闻的安全。

标签: asp.net asp.net-mvc-3 encryption


【解决方案1】:

如果你真的想加密查询参数,这很简单,只需使用 .Net 提供的任何加密器,然后使用属性或 httpmodule 来解密参数即可。

最重要的是始终验证请求。如果您可以使用防伪令牌进行 POST,请执行此操作。然后,如果该用户有权访问受保护的资源,请始终检查用户凭据。

一点也不难,但你必须慢慢来,处理你能想到的每一个场景。使用白名单方式:只允许满足某些条件的人。

【讨论】:

    【解决方案2】:

    一种选择是使用随机生成的字符串或唯一标识符 (GUID) 使您的 PK 变得那么长。

    【讨论】:

    • 但是查询这些 GUID 需要很长时间。
    • 现在可以生成顺序的 GUID,因此 PK 友好。如果顺序意味着它们有些“可预测”并且这是不可接受的,则可以为此 guid 添加代理键列并使用非聚集索引。
    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-08-24
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多