在普通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 相关文章推荐
实用函数4
Nov 08 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
php通用防注入程序 推荐
Feb 26 PHP
php中全局变量global的使用演示代码
May 18 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
php冒泡排序与快速排序实例详解
Dec 07 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
详解Python 循环嵌套
2020/07/09 Python
法院信息化建设方案
2014/05/21 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
离婚财产分配协议书
2014/10/21 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
奖励申请报告范文
2015/05/15 职场文书
村官2015年度工作总结
2015/10/14 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Redis IP地址的绑定的实现
2021/05/08 Redis