密码用单向哈希存储保证了数据库被脱后用户密码的安全. 由于彩虹表这种攻击方式的存在,一般认为md5,SHA1等单向算法的安全性是不够的.那如何选择合适的加密算法? 下面介绍业界几种高强度单向哈希算法,并比较其优劣. PBKDF2 PBKDF2 是一个比较简单的算法,它根据’iterations’参数大小,执行N次HMAC运算. HW数据库密码存储的最低安全要求是,1000次HMAC-SHA256计算,推荐的是1万次.当然满足最低要求前提下,到底多少次合适需综合考虑性能要求. 使用GPU阵列.或F…
密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字符序列.在 Java 中提供很多被证明能有效保证密码安全的 Hash 算法实现,我将在这篇文章中讨论其中的部分算法. 需要注意的是,一旦生成密码的 Hash 值并存储在数据库中后,你将不可能再把它转换回密码明文.只能每次用户在登录到应用程序时,须重新生成 Hash 值与数据库中的 Hash 值匹配来完成密码的校验. 简单的密码安全实现使用 MD5 算法 MD5消息摘要算法(MD5 Message-Digest Alg…
最近项目组要完成一个新Web Servicer接口的开发,其中有项要求是支持外部客户程序以https方式访问这些SOAP接口.项目组当前基于tomcat6.0.29开发,axis版本为1.4.拿到这个需求时不明所以,后来发现网上的资料非常多,但据观察,基本步骤和apache官网的上操作步骤基本一致,少有特别之处.于是参照资料,这个特性顺利完成.客户拿到之后非常满意,但看到tomcat配置文件中证书的密码以明文保存时,客户不满意了,要求修改为密文. 根据官网的资料以及实地验证,tomcat的Con…
一,mysql安装 下载地址 https://dev.mysql.com/downloads/file/?id=471342 解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计算机环境变量中 用CMD命令行执行,mysqld --initialize-insecure 初始化数据库,这样C:\mysql-5.7.19-winx64 这个目录下就会产生data的目录,里面包含的就是初始化的东西,配置文件,用户密码信息 -insecure 这个参数就是告诉数据库登陆的时候以本…
如果你是一个 web 开发工程师,可能你已经建立了一个用户账户系统.一个用户账户系统最重要的部分是如何保护密码.用户账户数据库经常被黑,如果你的网站曾经被攻击过,你绝对必须做点什么来保护你的用户的密码.最好的用来保护密码的方式是采用加盐密码散列 (salted password hasing). 本文将解释为什么要这样做. 互联网上充斥着大量的误导信息,有许许多多的关于如何正确做密码散列的矛盾的观点,有些甚至是误解.密码散列是一个简单的事情,但是仍然有很多人做错了.在这篇文章中,我不仅将解释正确…
目录 前言 编码安全 反序列化命令执行 SQL 注入 跨站 XSS(Cross-site scripting) 跨站请求伪造 CSRF(Cross-site request forgery) URL跳转 文件安全 任意文件上传 任意文件下载 权限安全 垂直权限安全/纵向越权 水平权限安全/横向越权 信息安全 密码 个人敏感信息 验证码安全 参考资料 前言 安全无小事,成败在细节,网络有风险,灾难弹指间. 安全一般情况下看不见,在你周围漂浮着,显现出来后,往往会刻骨铭心.正因为安全看不见,所以往往…
随着在线攻击的增多,密码安全越来越重要.作为开发者我们要担负起安全管理.计算哈希和存储用户密码的责任,不管应用是简单的游戏还是绝密商业文件的仓库,都要做到这一点.PHP内置了一些工具,让保护密码变得更加容易,本节我们就来讨论如何根据现代的安全措施来使用这些工具. 1.密码保护三原则 绝对不能知道用户的密码 我们绝对不能知道用户的密码,也不能有获取用户密码的方式,如果应用的数据库被黑,你肯定不希望数据库中有纯文本或能解密的密码.任何时候,知道的越少越安全. 绝对不要约束用户的密码 如果要求密码符合…
laravel5文档介绍 //对 A 密码使用Bcrypt 加密 $password = Hash::make('secret'); //你也可直接使用 bcrypt 的 function $password = bcrypt('secret'); //对加密的 A 密码进行验证 if (Hash::check('secret', $hashedPassword)) { // The passwords match... } //检查 A 密码是否需要重新加密 if (Hash::needsRe…
laravel5文档介绍 //对 A 密码使用Bcrypt 加密 $password = Hash::make('mima'); //你也可直接使用 bcrypt 的 function $password = bcrypt('mima'); //对加密的 A 密码进行验证 if (Hash::check('mima', $hashedPassword)) { // The passwords match... } //检查 A 密码是否需要重新加密 if (Hash::needsRehash($…
在各种线上应用中,用户名密码是用户身份认证的关键,它的重要性不言而喻.一方面,作为保护用户敏感数据的钥匙来说,一旦被破解,系统将敞开大门完全不设防.另一方面,密码这把钥匙本身就是非常敏感的数据:大多数用户会在不同应用中使用近似甚至完全相同的密码.一旦某一个应用的密码被破解,很可能坏人就此掌握了用户的“万能钥匙”,这个用户的其它应用也相当危险了. 这篇博文就重点讨论对于密码本身的存储的安全性考虑,而系统自身的安全性不在此文的范围之内. 对于如此重要的用户密码,究竟该怎样在系统中存储呢? “君子不立…