首先我要说的是,我们验证了服务器端的每个字段,因此这是一个关于客户端可用性的问题.
关于何时使用javascript验证和格式化html表单输入字段的传统智慧是什么?
例如,我们有一个电话号码字段.我们允许数字,空格,括号和连字符.我们希望该字段有十位数.此外,我们希望该字段看起来像(123)456-7890,即使用户没有这样输入.
好像我们可以
我已经看到它完成了所有这些方法,但我无法从可用性的角度找到最佳(甚至普遍接受)的信息,更重要的是,为什么.
[ 编辑:一些澄清]
我们绝对不执行任何格式标准.当我说格式时,我的意思是我们将使用javascript重写事物,使它们看起来很好.如果用户键入1234567890,我们将其更改为(123)456-7890.没有可能失败的"格式化规则".
我将此与验证区分开来,因为如果它们没有输入足够的数字,我们必须让它们修复它.
我想我应该将这个问题重新解释为"什么是关于何时验证以及何时格式化......的传统智慧?
到目前为止答案中的好消息!
编辑:我接受我自己的答案,希望其他人会发现这个链接和我一样有用.
在许多应用程序中,如果您的用户名或密码出错,则会收到一个非特定错误,指出输入的用户名不存在或该用户名的密码不正确.
我(天真地)希望应用程序指定发生两个错误中的哪一个.有没有理由不区分它们?我想这会让攻击者更难猜出一个正确的用户名/密码组合,但有没有任何文献,研究或类似的东西支持这个假设?
我们有一个无状态的Web应用程序.我们使用SSL/TLS上的http身份验证.用户的浏览器可能存储了身份验证凭据(如果他们以这种方式配置浏览器,可能甚至在浏览器关闭后也是如此.)我们会在每次访问时验证它们.
由于主要与可用性有关的原因,我们希望停止使用http身份验证.是否有合理的方式来实现用户登录和
例如,我们愿意使用cookie,并可以将用户名和密码存储为cookie.但是,这似乎不太安全.但是吗?如果我们使用非持久性cookie,它是否比浏览器在会话期间用于存储凭据的方法或更长时间的安全性更低?
我们可以存储用户名和密码的哈希,如下所示:我应该在cookie中存储什么以在用户登录期间实现"记住我"但是更好吗?
我们可以将随机令牌存储为cookie,但是我们必须在服务器上保留一个查找表(会话)并变为有状态.
我们可以将凭据的加密版本存储为cookie,然后在每次访问时进行解密和验证.这 似乎比http身份验证稍微安全一点,也不需要状态.但是,我不确定我们是否需要额外的解密开销.它真的更安全吗?如果有人获得了加密(或散列,如上所述)字符串的副本,那么它们是否具有与拥有密码相同的访问权限?
我很感激你的想法,但让我们开始假设SSL/TLS上的http身份验证足够安全 ,我们希望保持无状态.
编辑
经过一些更多的研究,我认为这个stackoverflow问题:客户端会话更好地说明问题,答案也相应更好.感谢大家的投入.