在普通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 调用远程url的六种方法小结
Nov 02 PHP
关于PHP5 Session生命周期介绍
Mar 02 PHP
php 学习资料零碎东西
Dec 04 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
php数据序列化测试实例详解
Aug 12 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
CI框架简单分页类用法示例
Jun 06 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
中学教师自我鉴定
2014/02/07 职场文书
手机银行营销方案
2014/03/14 职场文书
课程设计的心得体会
2014/09/03 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android