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


Posted in PHP onJuly 21, 2007

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,那么两个密码加密后的字符串是完全不同的!

PHP 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
discuz的php防止sql注入函数
Jan 17 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php结合正则获取字符串中数字
Jun 19 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
php微信开发之关注事件
Jun 14 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 #PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 #PHP
一段php加密解密的代码
Jul 16 #PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 #PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 #PHP
PHP如何编写易读的代码
Jul 10 #PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 #PHP
You might like
PHP面向对象编程快速入门
2006/10/09 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
用JQuery调用Session的实现代码
2010/10/29 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
python 判断自定义对象类型
2009/03/21 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
境外导游求职信
2014/02/27 职场文书
大学生心理活动总结
2014/07/04 职场文书
违章停车检讨书
2014/10/21 职场文书
测量员岗位职责
2015/02/14 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL