- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我想要建立一个登录系统时,我总是将给定密码的 MD5 与服务器端用户表中的值进行比较。
但是,我的一位 friend 告诉我,网络软件可以嗅探“明文”密码。
所以我的问题是:在客户端对密码进行哈希处理是个好主意吗?它比在服务器端对其进行哈希处理更好吗?
最佳答案
基本上,你的 friend 是对的。但简单地在客户端对密码进行哈希处理仅比将其以纯文本形式提交到服务器要好。可以监听您的纯文本密码的人当然也能够监听散列密码,并使用这些捕获的散列来对您的服务器进行身份验证。
对于这个问题,更安全的身份验证协议(protocol)通常会跳过许多环节,以确保此类重放攻击无法起作用,通常是通过允许客户端选择一堆随机位,这些位会一起散列与密码,并以明文形式提交给服务器。在服务器上:
在客户端:
由于服务器知道自己的随机信息以及客户端的随机位(它以明文形式获取它们),因此它可以执行本质上相同的转换。该协议(protocol)确保,只要双方每次生成不同的“噪声位”,在此对话中监听的任何人都无法使用记录的信息进行错误的身份验证(除非使用了非常弱的算法......),执行握手。
编辑所有这些都容易出错且乏味,并且有点难以正确执行(阅读:安全)。如果可能的话,请考虑使用由知识渊博的人已经编写的身份验证协议(protocol)实现(与我不同!以上内容仅来 self 前段时间读过的一本书的内存。)您通常不想自己编写此内容。
关于passwords - 是否值得在客户端对密码进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3715920/
我正在生成代码,其中我恰好将 n 个单词从一个内存位置复制到另一个非重叠内存位置。 n 是静态已知的。 目前,我发出大量加载指令,然后是大量存储指令,但我怀疑从 n 的某个值开始,调用 memcpy会
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
用例如下: 我有一张 map ,其中将插入一些键/值。 该程序将查询该 map ,但是在第一个查询之后,我可以保证该 map 将完全不会被修改。 因为查询的结果完全是输入的函数,所以在查询方法上放置属
Helo 伙计们,我尝试使用 Refs 并在他的内部提供 this.setState 但它给出: Maximum update depth exceeded. This can happen when
在检查事件时,使用带有 switch 或 if 的代码块是很常见的事情。如果变得简单,它可以是干净的代码,但似乎仍然有比需要更多的行,并且可以使用 lambda 进行简化。 用 if 阻止: if(a
Amazon 最近宣布在其 RDS 产品线中支持 Oracle: http://aws.amazon.com/rds/oracle/ 我想知道是否有人使用过它,或者是否有令人信服的理由将我的数据从 M
我是一名优秀的程序员,十分优秀!