【问题标题】:Encrypt Url Parameter In asp.net Mvc在 asp.net Mvc 中加密 URL 参数
【发布时间】:2019-03-26 14:28:59
【问题描述】:
@using(Html.BeginForm("Action", "Controller", FormMethod.Get)
{          
  @Html.TextBoxFor(model=>model.Id)
  <input type="submit" value="Search" />
}

1-当我们点击提交按钮时,这将像这样创建 URL

    http://localhost:53734/Controller/Action?id=10  
    //10 is input From Textbox

我想加密 Id 参数,例如 http://localhost:53734/Controller/Action?id=encrypted 值为 10

【问题讨论】:

  • 改用 HTTPS。如果您在 Javascript 中加密任何内容,那么任何有权访问页面源的人都将一目了然。这包括可能入侵任何中间代理、路由器的黑客。
  • @MohammadAlghanem 这主要是一个 Javascript 问题。
  • 您要防范什么?防止客户端和服务器之间的某人窃取参数?还是阻止服务器端代码读取参数?加密只能防止第二种情况
  • 只想保护Url服务器端用户看不到id参数的实际值

标签: c# asp.net model-view-controller


【解决方案1】:

据我了解,您想“隐藏”和“保护”请求。最好的解决办法是:

  • 使用 HTTPS,以便传输提供加密
  • GET 和 POST 中的所有参数都是加密的(更多 Are HTTPS URLs encrypted?)。

如果不可能,请使用 RSACryptProvider 加密参数。万能加密代码在MSDN:https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider?view=netframework-4.7.2

【讨论】:

  • URLs are also encrypted整个有效负载被加密,而不仅仅是其中的一部分。
  • 至于使用 AES(即 RSA),Javascript 代码必须使用通用密码对参数进行加密。加密代码和密码都会受到任何 MITM 攻击。
  • @PanagiotisKanavos 你是对的,我会更新答案
  • @PanagiotisKanavos 但他的代码不是 JavaScript,而是经典的 ASP.NET MVC
  • 谁来加密表单的字段?
猜你喜欢
  • 2015-12-21
  • 2011-05-26
  • 2012-07-17
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多