2011-08-18 27 views
1

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

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

我正在用C#编写ASP.NET 3.5。

谢谢。

+2

这是一个坏主意。你应该**总是**散列在服务器上的密码。 –

+0

我在注册期间用盐对密码进行散列,然后将散列存储在服务器上。这是一种错误的做法吗? –

+0

您为什么在客户端上散列密码?如果出于安全考虑,我建议使用HTTPS并且使用HTTPS – Earlz

回答

2

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

至于散列密码的客户端,看看这个answer ...

唯一的(目前实际)的方式来防止登录 拦截(数据包嗅探)登录过程中使用 基于证书的加密方案(例如SSL)或经过测试的挑战 - 响应方案(例如基于Diffie-Hellman的SRP)。任何其他方法都可以被窃听攻击者轻易规避。 在那个笔记:哈希密码客户端(例如用Javascript) 是没有用的,除非它与上面的一个 - 即。或者用 保护带有强加密功能的线路或者使用经过反复测试的 挑战 - 响应机制(如果你不知道那是什么,只需要 知道它是最难证明的之一,最难 设计,并且最难实施数字安全的概念)。 哈希密码对于密码泄露是有效的,但不是对重播攻击,中间人攻击/劫持或 强力攻击(因为我们正在向攻击者提供用户名,密码为 和散列密码) 。

+0

+1对于说什么哈希不会帮助 – Earlz

+0

我想我会最终重定向窗体的onsubmit事件[这里描述](http://www.duncangunn.me.uk/dasblog/2008/03/07/ InterceptingWebFormOnSubmit.aspx)。当然,默认情况下使用SSL,但如果由于某种原因而禁用了SSL,我会使用哈希。 –

+0

如果您无法确保启用SSL,那么将其散列在客户端上是个好主意。这不是防弹,但比没有好。 – dotjoe