【问题标题】:Prevent asp.net forms from submitting certain fields防止 asp.net 表单提交某些字段
【发布时间】:2011-08-18 16:27:43
【问题描述】:

防止标准 ASP.NET 表单在 onsubmit 事件中提交某些字段的最佳方法是什么?具体来说,我有一个注册页面,我首先在其中验证字段 (RequiredFieldValidator),然后提交表单。但是,我只想从隐藏字段提交密码哈希,而没有实际的纯文本密码字段。

我可以在提交之前覆盖默认的 onsubmit 函数以使字段无效,但是我将无法验证密码。处理这种情况的最佳方法是什么?

我在 ASP.NET 3.5 上使用 C# 编写代码。

谢谢。

【问题讨论】:

  • 这是个坏主意。您应该始终在服务器上散列密码。
  • 我在注册过程中用盐对密码进行哈希处理,然后将哈希存储在服务器上。这是一种错误的做法吗?
  • 您在客户端上散列密码的目的是什么?如果是出于安全考虑,我建议使用 HTTPS 并完成它
  • 启用 SSL 时,密码以纯文本形式发送。当它被禁用时(并非所有托管环境都支持它),它作为散列发送。
  • @Jon 哦,好吧,我明白了。在这种情况下,使某些东西安全是有意义的。我不相信只用 javascript 就可以协商 100% 的安全连接。散列应该使攻击变得更加困难

标签: c# .net forms


【解决方案1】:

您可以将纯文本输入保留在 <form> 之外,或者在提交表单之前使用 javascript 将其删除,或者在处理帖子时忽略服务器上的这些字段。

至于密码客户端散列,请查看此answer...

唯一(目前实用的)防止登录的方法 登录期间的拦截(数据包嗅探)是通过使用 基于证书的加密方案(例如 SSL)或经过验证和测试的 挑战-响应方案(例如基于 Diffie-Hellman 的 SRP)。任何 其他方法很容易被窃听者绕过。 关于这一点:在客户端散列密码(例如使用 Javascript) 除非它与上述之一相结合,否则它是无用的 - 即。任何一个 使用强加密或使用久经考验的设备来保护线路 挑战-响应机制(如果您不知道那是什么,只需 知道它是最难证明、最难 设计,并且最难实现数字安全中的概念)。 散列密码对密码泄露有效,但不是 针对重放攻击、中间人攻击/劫持,或 蛮力攻击(因为我们将两个用户名都交给了攻击者, 盐和哈希密码)。

【讨论】:

  • 我想我最终会按照here 的描述重定向表单的 onsubmit 事件。当然默认使用 SSL,但如果由于某种原因被禁用,我会使用散列。
  • 如果您不能确保启用 SSL,最好在客户端上散列它。这不是防弹的,但总比没有好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多