原文:
http://shell909090.com/blog/2011/12/%E5%AF%86%E7%A0%81%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%8E%E6%96%87%E5%AD%98%E6%94%BE/
很早就写过一篇blog,说到过,你的密码应当一次一密,至少某些密码泄露时不至于波及太广。结果这次CSDN不幸中枪。我不去讨论多少人急急忙忙修改密码,多少人数据泄露,单说说为什么很多时候密码是明文存放的。
就我有记忆以来,我写应用就从来没有明文存放过密码。最起先是md5方式存放。md5可以让你找到hash值,有的时候也会被用于穷举。但是无论如何,md5密码本身比明文安全很多。后来改成了challenge-response验证模式,也是用md5做的hash后进行c-r的。再后来,md5的碰撞冲突的论文出来,后面用的多数都是sha256了。从头到脚,我就没做过密码明文存放,并且,我认为这是正常程序员最起码的修养。(当然,明文存放的代码不是没有,不过那是调试模式) 但是现在我所知,很多系统的身份验证都是密码明文存放的,为什么?其实我不大理解。不过有时候问起,有些人和我说了几个我觉得不是搪塞的理由,现在抄录如下,告大家知。
1.明文密码没法应付检查。大家知道互联网审查,有时往往会一个电话过来,要XX用户的密码。如果你没法给出,上头就认为你不配合,事情各种难搞。作为审查机构的老板,当然没必要知道明文密码的危害。他们只知道,我要密码,为什么不行。所以,悲崔的程序员们就往往会得到一条死命令,保存明文密码。
2.压根不知道明文密码有什么问题。中国的互联网有太多的没基础的新人,从石头的缝隙中顽强的生长出来。这不是坏事,坏事的是这些人往往会在一些基础问题上出现奇怪的毛病。例如有些程序员,写程序很快,但是居然从来不知道密码明文存放会导致什么问题。更神奇的是,这些人中,有一家银行…
3.自信暴棚的混帐。有些人的自信总比别人强,而且强在莫名其妙的地方。例如:我的服务器肯定是没问题的,所以我的密码一定要明文存放。如果不,就是质疑我的技术。
实话说,这种人真是少数中的少数。
4.遗留系统。很多系统设计的时候因为某个其他理由,使用了明文密码。等后来这个理由不存在了,密码系统升级成了一个困难。因为密码系统太重要了,所以在没有太大利益的情况下,总是倾向于不修改系统。但是有什么足够利益来推动系统修改呢?用户安全问题在发现前不是一个问题——好比这次的CSDN,不是被暴出来的话就根本不会被当作一个问题。系统的管理者,每个人都没有足够的动力去修改系统。
5.世界的阴暗角落。有的时候,程序员/老板明文存放的理由,是为了方便盗*用户其他网站资料。例如我所知的某钓鱼案例,你注册网站,就提供很多免费服务,网站看起来也很靠谱——除了后来突然爆出这家网站其实暗地中用你的生日/密码猜解信用卡/银行卡密码,大家才突然发现,这家网站其实根本没有在美国注册,而是一个听都没听说过的国家。
而且很多网站提供从其他网站导入之类的功能,更加的危险。以前经常爆出twitter密码被窃取,主要就是因为OAuth开放以前,twitter上的第三方应用需要提供原生密码,导致很多小应用的目的其实就是收集密码…
6.为了给用户提供方便。这个理由和上一个很类似,不过不是为了某些险恶的目的。而是客户经常要求——为什么我不能做XX事,为什么我不能blahblah。好吧,为了让你能,我们就必须保存明文密码。
明文密码的保存原因很多,不过结论都是一样的。在任何网站/服务上,你绝对不能使用同一个密码,零级密码除外。尤其请注意,不要在两家银行使用同样的银行卡密码/网银密码,原因不说。
从未来进化的角度说,密码的未来进化趋势是核心授权体系。就是你要向某个网站验证身份,只需要向身份验证商验证,剩下自动完成。现在的openid就是一种解决方案。密码都没了,还谈什么泄露呢?同时,实体交互和授权的精细划分也是一个趋势。某个网站访问别的网站的数据的时候,会形成一个访问令牌。这个令牌对需要访问的内容详细写明,并且需要用户授权。OAuth就是这个趋势的代表。另外一个趋势是利用某个足够安全的设备作为以上两者的终端载体。目前这个设备用的是手机,可是——手机不是一个足够安全的设备。也许这会是下一个XX门的隐患吧。
分享到:
相关推荐
密码不得以任何形式的明文存放在主机电子文档中,不得以明文形式在电子邮件、 传真中传播。 第三条 系统管理人员在建立帐号时,对所分配帐号的初始密码设置为第一次登录强制修改。对 于不能强制修改密码的系统,...
用户需要将找到的加密密码复制到这个查看器中,程序会进行解密处理,从而显示原始的明文密码。请注意,这种操作一般需要对计算机和文件系统有基本的理解,并且涉及到用户数据安全,应当谨慎操作。 这个过程涉及到的...
用户信息的存储应该遵循安全原则,例如使用哈希加盐的方式加密密码,防止明文密码泄露。 4. SQL查询语言:用于与数据库交互,获取、插入、更新或删除数据。在登录场景中,通常会编写SQL查询语句来查找特定的用户...
为了保护用户的敏感信息,密码通常不应明文存储。在生产环境中,可以使用Android KeyStore系统来加密密码,或者在服务器端进行验证。另外,应用应当对用户输入进行适当的过滤,防止SQL注入等安全风险。 5. **类的...
维吉利亚密码是一种古老的替换密码,它在16世纪由意大利外交官布莱斯·德·维吉利亚设计,主要用于加密通信。维吉利亚密码的主要特点是使用一个可变的密钥来加密文本,使得每次替换字母时使用的加密规则都不同,从而...
但这并不意味着你能直接获取明文密码,只是提供了进一步查找的线索。 3. **使用第三方工具**: 有些第三方工具声称可以帮助恢复keystore密码,如Keystore Explorer。这些工具可能在特定情况下有所帮助,但请注意...
这里就是存放管理员密码的地方。将原有的密码替换为你使用jBCrypt生成的新密文。 **4. 保存并重启Jenkins** 保存对`config.xml`文件所做的修改,并重启Jenkins服务。可以通过访问Jenkins的管理页面来完成重启操作...
在描述中提到,该程序设计使得即使直接查看数据库文件,也无法看到密码的明文,这通常涉及到密码加密和解密的机制。下面我们将详细讨论这个知识点。 1. **密码加密**:为了保护用户的隐私和账户安全,密码不应该以...
2. **本地存储**:加密后的密码一般会被存放在用户的浏览器本地存储(如Cookie、LocalStorage或IndexedDB)或者应用程序的数据存储区域。这样当用户再次访问时,系统可以检查本地是否存在已保存的凭据。 3. **身份...
- 避免密码明文显示:在切换到明文显示后,可以通过添加CSS样式(如`opacity: 0`)或使用`placeholder`属性来遮罩密码,同时保留文本,以便用户看到字符数量。 - 保持图标状态同步:更新显示/隐藏图标的样式,表示...
首先,我们需要了解什么是PE环境。PE是微软开发的一种轻量级操作系统,用于系统安装、维护和故障恢复。它基于Windows系统核心,可以在启动电脑时加载到内存中运行,无需预先安装在硬盘上。常见的PE工具有老毛桃、大...
通过编译并运行这个源代码,用户可以输入自己的明文和偏移量,体验凯撒密码的加密和解密过程。学习和理解这段代码可以帮助初学者更好地掌握C语言的基础知识,同时也能对古典密码学有初步的认识。
标题中的“Passwy”是一款专为安卓用户设计的密码创建应用,它旨在帮助用户生成强健且独特的密码,以提高在线账户的安全性。这款应用的独特之处在于它利用用户提供的短语来生成密码,使得记忆更加方便,同时也确保了...
通过这一脚本,他成功地将编码后的密码提示字符串转换为了明文“monkeyseat”。 #### 六、对用户的影响 尽管这一发现表明了密码提示信息可能被非法获取的风险,但对于大多数普通用户而言,实际影响并不大。因为仅凭...
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM在1970年代初开发,后被美国国家标准局(NIST)采纳为标准。它使用64位的数据块进行加密,其中包含56位的有效密钥。DES的加密过程分为两步:初始...
密码散列是密码加密后的结果,用于在不存储明文密码的情况下,验证用户输入的密码是否正确。在Windows系统中,这些散列值通常存储在安全账号管理器(SAM)数据库或者活动目录中。 pwdump工具和ophcrack软件是实现密码...
还原精灵5.0密码读取软件,只用于测试还原精灵内存中存放明文密码的漏洞。
**DES(Data Encryption Standard)**是一种经典的分组密码算法,由IBM公司开发,并在1977年被美国国家标准局(NIST)采纳为数据加密标准。DES是一种块密码,它将明文数据分为64位的数据块进行处理,其中包含56位的...
凯撒密码,又称为移位密码,是一种古老且基础的加密技术,它的核心思想是将明文中的每个字母按照固定的位数向右(或向左)平移来实现加密。在解密时,只需用相同的位数向左(或向右)平移即可还原原文。这种密码方法...