在普通HTTP上安全地传输密码

1。理论

在普通HTTP上,一般表单中的密码都是以明文方式传到服务器进行处理的。这无疑给了坏人以可乘之机!这里我们就说说怎么传输密码才是安全的!

与其传输密码本身,到不如传输其加密后的形式。MD5是个不错的选择。第一,不同的资源几乎不可能生成相同的MD5摘要,第二,MD5的编码方式是不可逆推的。有了这些特性,我们就可以让MD5摘要公开的在Internet上传输,而不必担心密码被坏人知道。然后在服务端也将密码通过同样的方式加密,最后比较这两个字符串。

然而,我们不能为了登陆而将密码md5后直接通过Internet传输,因为坏人虽然不会知道我们的密码,但肯定会知道这个特殊的字符串可以授权他们访问我们的网站!

这就是公匙和私匙要解决的问题,首先由服务器提供一个随机字符串,然后客户端将这个随机字符串和密码相加后再加密!

每次登陆时,服务器会产生不同的随机字符串,这样你的密码没有变,但是通过上面的方法加密后的MD5摘要却完全不同。这样就算坏人得到了这些MD5摘要,他们也不可能分析出你的密码!

这种方法中,服务器提供的随机字符串叫做"公匙",寿命很短,并可以被任何人利用;你的密码叫做"私匙",寿命很长,而且永远也不会被人知道。

2。实现

客户端Javascript并没有提供现成的md5算法,但我们在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上实现的例子。

在PHP中我就不用多说了,直接用md5()这个函数就可以搞定!随机字符串我们可以用session来存储(PHP就是强啊~~)

3。注意

在JS中,中文都是UTF-8格式的,所以如果你的密码是中文,而且存储在服务端的密码的编码方式是GB2312,那么两个密码加密后的字符串是完全不同的!

(0)

相关推荐

  • 在普通HTTP上安全地传输密码

    1.理论 在普通HTTP上,一般表单中的密码都是以明文方式传到服务器进行处理的.这无疑给了坏人以可乘之机!这里我们就说说怎么传输密码才是安全的! 与其传输密码本身,到不如传输其加密后的形式.MD5是个不错的选择.第一,不同的资源几乎不可能生成相同的MD5摘要,第二,MD5的编码方式是不可逆推的.有了这些特性,我们就可以让MD5摘要公开的在Internet上传输,而不必担心密码被坏人知道.然后在服务端也将密码通过同样的方式加密,最后比较这两个字符串. 然而,我们不能为了登陆而将密码md5后直接通过

  • 如何修改Xampp服务器上的mysql密码(图解)

    今天自己在搞php的过程中发现,如果我们使用Xampp服务器自带数据库mysql,就必须先修改mysql的密码,大家都知道,mysql的初始面为空,但是如果连接数据库是密码为空就会报错,在网上查找了很多解决类似问题的办法,都是打开mysql的命令控制台,解决办法如下图 但是按照网上的说法,顺着步骤坐下来还是有问题,mysql的密码还是没有修改,接下来我将为大家介绍自己修改成功的步骤: 1.点击MySQL的admin进入phpMyAdmin页面: 2.点击账户,进入账户管理页面: 3.选中root

  • 在CentOS / RHEL上设置 SSH 免密码登录的方法

    作为系统管理员,你计划在 Linux 上使用 OpenSSH,完成日常工作的自动化,比如文件传输.备份数据库转储文件到另一台服务器等.为实现该目标,你需要从主机 A 能自动登录到主机 B.自动登录也就是说,要在 shell 脚本中使用ssh,而无需要输入任何密码. 本文会告诉你怎样在 CentOS/RHEL 上设置 SSH 免密码登录.自动登录配置好以后,你可以通过它使用 SSH (Secure Shell)和安全复制 (SCP)来移动文件. SSH 是开源的,是用于远程登录的最为可靠的网络协议

  • 在 Linux 上查看和配置密码时效的方法

    使用正确的设置,可以强制 Linux 用户定期更改密码.以下是查看密码时效以及如何更改其中设置的方法. 可以将 Linux 系统上的用户密码配置为永久或设置过期时间,以让人们必须定期重置它们.出于安全原因,通常认为定期更改密码是一种好习惯,但默认并未配置. 要查看和修改密码时效,你需要熟悉几个重要的命令:chage 命令及其 -l 选项,以及 passwd 命令及其 -S 选项.本文会介绍这些命令,还有其他一些 chage 命令选项来配置密码时效. 查看密码时效设置 确定某个特定帐户是否已设置密

  • Go语言中如何确保Cookie数据的安全传输

    什么是Cookie Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上.通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态.Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能. Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置.主题等) 浏览器行为跟踪(如

  • 当菜鸟遇上黒客之三:QQ防盗篇

    上网了吧,用Q了吧,被盗了吧,正常.想上网吧,想用Q吧,不想被盗Q吧,正常.那就来了解一些盗QQ方面的知识吧!  一.名词解释  1.字典  所谓字典,其实就是一个包含有许多密码的文本文件.字典的生成有两种方式:用字典软件生成和手动添加.一般字典软件能生成包含生日.电话号码.常用英文名等密码的字典,不过由于这样生成的字典体积大,而且不灵活,所以黑客往往会手动添加一些密码到字典里去,形成一个"智能化"的密码文件.  2.暴力破解  所谓暴力破解,其实就是用无数的密码来与登录QQ的密码进行

  • 用vbscript防止本地用户更改其密码

    问: 嗨,Scripting Guy!如何配置本地用户帐户以使该用户无法更改其密码? -- DC 答: 嗨,DC.这其中的秘密就在于神秘的 userFlags 属性.我们先向您介绍如何设置用户帐户以使用户无法更改其密码,然后介绍可以使用 userFlags 属性管理的一些其他本地用户帐户属性.运气好的话,还可以赶上吃午餐哩! 我们先来介绍可以防止用户更改其密码的脚本: 复制代码 代码如下: Const ADS_UF_PASSWD_CANT_CHANGE = &H0040 Set objUser 

  • MAC 中mysql密码忘记解决办法

    MAC 中mysql密码忘记解决办法 最近项目用到MySQL,之前装过一个,可是忘记了当时设置的密码,然后走上了修改密码的坎坷道路.在百度,Google了一堆资料之后还是,发现处处是给程序员埋的坑.于是下决心,写一篇博客,涵盖各种情况下忘记密码的解决办法. 情况一:在mysql官网直接下载dmg文件进行安装,忘记密码 1.关闭mysql服务器 sudo /usr/local/mysql/support-files/mysql.server stop 2.进入目录 cd /usr/local/my

  • Linux用户在第一次登录时强制更改初始密码

    下面介绍如何迫使用户在下一次登录时更改其密码. Linux下的每个用户帐户都与和密码相关的各个配置和信息关联起来.比如说,它记得上一次密码更改的日期.密码更改间隔的最少/最多天数以及何时让当前密码到期失效,等等. 一种名为chage的命令行工具可以访问和调整与密码到期失效有关的配置.你可以使用该工具,迫使任何用户在下一次登录时更改密码. 想查看某一个用户(比如alice)的密码到期失效信息,运行下面这个命令.请注意:只有在你检查你自己之外的其他任何用户的密码有效期信息时,才需要根用户权限. $

  • php基于表单密码验证与HTTP验证用法实例

    本文实例讲述了php基于表单密码验证与HTTP验证用法.分享给大家供大家参考.具体分析如下: PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端浏览器发送"Authentication Required"信息,使其弹出一个用户名/密码输入窗口.当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会加上预定义变量 PHP_AUTH_

随机推荐