十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
大多数的web开发者都会遇到设计用户账号系统的需求。账号系统最重要的一个方面就是如何保护用户的密码。一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码,即使网站被攻破的情况下也不会造成较大的危害。如果你还在存储用户密码的MD5,那可真的有点弱了。
创新互联成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、app软件开发公司、成都手机网站制作、微信网站制作、软件开发、成都服务器托管等实行标准化操作,让客户可以直观的预知到从创新互联可以获得的服务效果。
保护密码最好的的方式就是使用带盐的密码hash(salted password hashing).对密码进行hash操作是一件很简单的事情,但是很多人都犯了错。接下来我希望可以详细的阐述如何恰当的对密码进行hash,以及为什么要这样做。
重要提醒
如果你打算自己写一段代码来进行密码hash,那么赶紧停下吧。这样太容易犯错了。这个提醒适用于每一个人,不要自己写密码的hash算法 !关于保存密码的问题已经有了成熟的方案,那就是使用phpass或者本文提供的源码。
什么是hash
hash("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
hash("hbllo") = 58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366
hash("waltz") = c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542
Hash算法是一种单向的函数。它可以把任意数量的数据转换成固定长度的“指纹”,这个过程是不可逆的。而且只要输入发生改变,哪怕只有一个bit,输出的hash值也会有很大不同。这种特性恰好合适用来用来保存密码。因为我们希望使用一种不可逆的算法来加密保存的密码,同时又需要在用户登陆的时候验证密码是否正确。
在一个使用hash的账号系统中,用户注册和认证的大致流程如下:
1, 用户创建自己的账号
2, 用户密码经过hash操作之后存储在数据库中。没有任何明文的密码存储在服务器的硬盘上。
3, 用户登陆的时候,将用户输入的密码进行hash操作后与数据库里保存的密码hash值进行对比。
4, 如果hash值完全一样,则认为用户输入的密码是正确的。否则就认为用户输入了无效的密码。
5, 每次用户尝试登陆的时候就重复步骤3和步骤4。
在步骤4的时候不要告诉用户是账号还是密码错了。只需要显示一个通用的提示,比如账号或密码不正确就可以了。这样可以防止攻击者枚举有效的用户名。
还需要注意的是用来保护密码的hash函数跟数据结构课上见过的hash函数不完全一样。比如实现hash表的hash函数设计的目的是快速,但是不够安全。只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。这样的函数有SHA256, SHA512, RipeMD, WHIRLPOOL等。
一个常见的观念就是密码经过hash之后存储就安全了。这显然是不正确的。有很多方式可以快速的从hash恢复明文的密码。还记得那些md5破解网站吧,只需要提交一个hash,不到一秒钟就能知道结果。显然,单纯的对密码进行hash还是远远达不到我们的安全需求...
以上是下面链接文章里的片段
具体请查看这个链接里的文章:
满意望采纳~
咱俩的希望太相似了,都希望自己有一个网页可以保存自己全部的密码,而且绝对安全!这样在任何电脑里都可以打开查阅,即方便又安全。我已经研究了很长时间了。我是这样保存的:用提示语的方式将所有的密码分别保存在两个QQ的记事本里。所谓提示语的方式就是指,在设置密码时,为了便于记忆,用一句话的声母做密码的一部分,这句话就是你的密码的提示语。这样做主要目的是防止QQ管理员和看你的记事本的朋友知道你的密码。这样就实现了“任何电脑里都可以打开查阅,即方便又安全”。当其中一个QQ被盗,马上再申请一个QQ,并把密码再存放在新的QQ记事本里。只要两个QQ不同时被盗,你的密码就永远不会丢失。顺便再提醒一下:为了防止别人看你的记事本,你可以为记事本设置密码,其实和QQ密码一样就行。用上述方法,只要记住QQ一个密码就可以了。
服务器安全包括如下几个方面:
1、物理安全:服务器的硬盘,电源,主板,赖以维持服务器正常工作的硬件,都是需要进行定期维护确保安全的,只有保证这些硬件的绝对安全才能保证我们的服务器能正常运行。
2、软件安全:软件安全包括系统安全,服务安全,漏洞安全,密码安全,网络安全
①、系统安全:系统本身是有很多一般都是比较安全的只要我们打好足够的补丁,但是系统文件我们创建好的网站目录权限,系统盘的关键位置例如temp的位置的权限设置。
②、服务安全:注册表和服务项一定要仔细进行检查严禁远程修改。
③、密码安全:对于弱密码要立即进行修改,密码强度要有数字加英文以及特殊符号进行整改
④、网络安全:防cc,抗doss是我们服务器安全很常见的问题了。也是防止木马病毒的入侵的必要的手段。
⑤、资源安全:进行资源监控保证资源不被篡改入侵是针对服务器一项很重要的安全措施能够及时帮助我们找出被篡改的资源,以及进行告警来帮助我们更好的管理服务器安全。