尽管业界已经达成共识,在传输用户password等须要保密的信息时,尽可能採用HTTPS/SSL协议传输。

但我们还是能够看到少数没实用HTTPS/SSL加密的站点或应用。

新浪微博的登录页面和MySQL是两个样例。接下来我们具体分析它们的password传输和保存机制。

步在计算token的过程中,须要对password作一次SHA1加密的哈希值。而在mysql.user表中。仅仅有对password作两次SHA1的哈希值。

破解方法

尽管MySQL的机制比新浪微博的要安全一些,但它仍然存在安全隐患。这个机制的短板在于password的存储。存储password的两次SHA1算法的哈希值并不能有效防止彩虹表法破解。

非常多黑客手上都有SHA1算法哈希值的彩虹表。他们仅仅要把这种彩虹表里的哈希值再作一次SHA1加密就能够了。

MySQL採用这个机制也能够理解。

假设黑客能够侵入mysql.user表格。那么他自然也能侵入MySQL数据库中的其它表格。

通常黑客破解的password的目的是盗取他人的数据。也就是黑客一旦侵入了mysql.user表格,那么他无需破解password也就能盗取数据了。

MySQL採用上述password保护机制有它的理由。其它系统假设也採用同样的机制,就要细致考虑当中的安全隐患了。

小结

一个系统的password保护机制是否安全取决于两个方面,即password传输的安全性和password存储的安全性。新浪微博和MySQL都没有採用HTTPS/SSL传输password。为了防止黑客在password传输过程中窃听password。它们仅仅能在传输过程中加盐然后用SHA1算法加密。因为password在传输过程中须要加盐,为了能够正常验证password,因此在存储password时仅仅能存储没有加盐的SHA1算法的哈希值。

因此password的存储成为整个机制的短板。

笔者曾写过一篇博客讨论怎样安全地存储password。感兴趣的读者请參考http://blog.csdn.net/cadcisdhht/article/details/19282407

我们没有必要在抛弃HTTPS/SSL的前提下试图去设计更加复杂的加密算法或者通讯协议。上述提到的两个方案是新浪微博和MySQL的程序猿们花了大量精力设计出来的机制,尚且还有明显的漏洞。我不觉得每一个程序猿都有自信说自己比新浪微博或者MySQL的程序猿更加优秀。

HTTPS/SSL在传输过程中用证书加密。不须要加盐来提高传输的安全性。这样在存储password的时候就能够採用加盐的机制,比方简单地採用加盐的SHA1算法。也能够採用Bcrypt或者PBKDF2。如此以来,在password的传输和存储两个环节都取得非常好的安全性。

假设安全性对一个系统是至关重要的因素,那么就採用HTTPS/SSL吧。

尽管部署HTTPS/SSL的系统有些麻烦,申请可信赖的CA的证书还要花钱,但和安全漏洞的潜在风险相比这些代价还是值得的。



从新浪微博和MySQL的password保护机制谈HTTPS/SSL的必要性的更多相关文章

  1. 【MySQL】InnoDB日志机制深入分析

    版权声明:尊重博主劳动成果,欢迎转载,转载请注明出处 --爱技术的华仔 Log & Checkpoint Innodb的事务日志是指Redo log,简称Log,保存在日志文件ib_logfi ...

  2. 【mysql】关于checkpoint机制

    一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘.因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时 ...

  3. Mysql 的字符编码机制、中文乱码问题及解决方案【转载】

    本文转载自:http://hi.baidu.com/huabinyin/item/7f51e462df565c97c4d24929.感谢作者及相关博主.        相信很多朋友都会对字符编码敬而远 ...

  4. 逆向工程学习第四天--Windows栈溢出保护机制(GS)原理及绕过测试

    GS简介: Windows的缓冲区安全监测机制(GS)可以有效的阻止经典的BOF攻击,因为GS会在函数调用前往函数栈帧内压入一个随机数(canary),然后等函数返回前,会对canary进行核查,判断 ...

  5. Linux - Reset a MySQL root password

    Use the following steps to reset a MySQL root password by using the command line interface. Stop the ...

  6. 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)

    该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...

  7. Linux常用保护机制

    Linux程序常见用的一些保护机制 一.NX(Windows中的DEP) NX:No-eXecute.DEP:Data Execute Prevention 也就是数据不可执行,防止因为程序运行出现溢 ...

  8. Hystrix针对不可用服务的保护机制以及引入缓存

    之前我写过一篇博文,通过案例了解Hystrix的各种基本使用方式,在这篇文章里,我们是通过Hystrix调用正常工作的服务,也就是说,Hytrix的保护机制并没有起作用,这里我们将在HystrixPr ...

  9. linux程序的常用保护机制

    操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP.ASLR等.在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX).ASLR(Lin ...

随机推荐

  1. 【转】非常好的Java反射例子

    转自 http://www.douban.com/note/306848299/ 原文: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时 ...

  2. MySQL学习笔记(十二)__连接查询(一)

    连接查询含义:又称多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行发生原因:没有有效的连接条件如何避免:添加有效的连接条件 ...

  3. sql IIF函数的应用

    工作中由于用各种框架,业务也不是很复杂,一直没怎么写过复杂的sql,今天写了一个 数据如下 代码如下 Sub 班级分数等级分析(shname) Dim Con As Object, rs As Obj ...

  4. Android开发使用控件入门--环境搭建

    Android开发使用控件入门--环境搭建 软件名称(,梦,,想.CAD  ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android S ...

  5. mybatis 使用参数

    Parameter  1.   传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne(&q ...

  6. js一般用法

    <1> 通过id查找html元素 var x=document.getElementById("intro");   <2> 通过标签名查找html元素 v ...

  7. wpf 自定义单选按钮 RadioButton

    新建RadioButtonEx.cs public class RadioButtonEx : RadioButton { public Geometry SelectIcon { get { ret ...

  8. 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法

    import requests import re import json import time from bs4 import BeautifulSoup from pyquery import ...

  9. php第二十二节课

    AJAX <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  10. UVA-1599 Ideal Path(双向BFS)

    题目: 给一个n个点m条边(2≤m≤100000, 1≤m≤200000)的无向图,每条边上都涂有一种颜色(用1到1000000000表示).求从结点1到结点n的一条路径, 使得经过的边数尽量少,在此 ...