在普通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 相关文章推荐
一个简单的php实现的MySQL数据浏览器
Mar 11 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
从php核心代码分析require和include的区别
Jan 02 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
php字符串倒叙
Apr 01 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
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Python 的 Socket 编程
2015/03/24 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python中Threading用法详解
2017/12/27 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Python小进度条显示代码
2019/03/05 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
共青团员自我评价范文
2014/09/14 职场文书
杜甫草堂导游词
2015/02/03 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
结婚幸福感言
2015/08/01 职场文书
公司与个人合作协议书
2016/03/19 职场文书