很多人都会问这样一个问题,我们在登录的时候,密码会不会泄露?随便进一个网站,登录时抓包分析,可以看到自己的密码都是明文传输的,在如此复杂的web环境下,我们没有百分的把握保证信息在传输过程中不被截获,那不使用明文如何告诉服务器自己的身份呢?

在一些高度通信安全的网络中,数据传输会使用HTTPS作为传输协议,但是通常情况下我们没必要使用HTTPS传输,虽说安全,但传输数据都需要加密解密,很费时。我们可以使用一些加密方式(如md5)对密码进行加密,如果仅仅只对密码加密那肯定是没有任何作用,所以可以在密码中加入一些其他的字符,合并之后使这个密码成为一个临时密码~

<label>username:</label><input id="uid" type="text" />
<label>password:</label><input id="pwd" type="password" />
<input type="submit" />
<script type="text/javascript">var t = new Date*1,uid = $("#uid").val(),pwd = $("#pwd").val(),delta = encrypt($("#pwd").val() + t);$.post("./login.php",{uid: $("#uid").val(),pwd: delta,tid: t}, function(data){//do something.
    })
</script>

在上面,提交表单的时候,pwd并不是真实的密码,他是pwd与t混合再加密的字符串。这样的字符串即便是被人截获也是一个无效的数据,即便是截获并知道了破解方式,我们还可以在后台给他设定一个时效限制。

<?phpdefine("uid", "user-A");define("pwd", "user-A-pwd");if(time() - $_POST['tid'] > 60*2 ||$_POST['uid'] !== uid ||decrypt(pwd . $_POST['tid']) !== $_POST['pwd']){die("error");
}
?>

如果下面三个条件有一个不满足就报错

  • 时间超过2分钟
  • uid不匹配
  • pwd与t的组合密码不匹配

当然,上面提到的encrypt和decrypt都是约定好的加密和解密方式,通常会使用md5加密。

这样的加密传输方式,需要客户端和服务器端的时间比较准确。如果要考虑时间不准确问题以及hacker动作迅速的问题,那就得用token来验证了。

所谓的token,其实就是在登录之前向服务器发送一个请求,获取准入的一个临时密码,这个临时密码是由服务器给出,所以不存在上面所说的时间不准确问题,同时这个token也是一个随机的字符串,只能单次使用,hacker很难获取,即便获取也无法使用,因为下一步登录所需的信息他没有。

很多童鞋都用过人人、QQ、微博的开发平台,其中OAuth认证也就是这个原理。就拿人人开发平台的认证来说,他的认证流程是这样的:

通过你在平台申请的API KEY向https://graph.renren.com/oauth/authorize请求一个临时密码,也就是token code,然后利用token code向https://graph.renren.com/oauth/token请求用户数据。整个流程十分简单。

这是一个简单的demo,获取你的头像和姓名。人人OAuth认证demo

使用token的弊端是需要额外发送一次请求,过程稍微复杂。有些公司VPN通道就是利用token做密码,为了保证高安全性,他们使用的是一个信息与服务器同步硬件设备,和银行发的动态口令一样,每次登陆都需要输入这个口令,那这个口令也就是token,不过他不是网络传输获取,所以安全性更高。

OAuth认证原理及HTTP下的密码安全传输相关推荐

  1. OAuth认证原理与第三方登录

    1.背景 以下例子引用知乎"OAuth 授权的工作原理是怎样的?足够安全吗?"中李天放的回答 假如你在某个网站A上使用微博进行第三方登录,那么你可以想象新浪微博就是你的家.偶尔你会 ...

  2. OAuth认证与授权

    什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密码提 ...

  3. 腾讯微博Android客户端开发——OAuth认证介绍

    腾讯微博是一个由腾讯推出,提供微型博客服务的类Twitter网站.在腾讯官方 的软件或网站中发布微博我们需要输入QQ号和密码,同样如果我们自己开发客户端给用户使用,我们也需要用户提供QQ号和密码,这就 ...

  4. HTTP摘要认证原理以及HttpClient4.3实现

    基本认证便捷灵活,但极不安全.用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改.安全使用基本认证的唯一方式就是将其与 SSL 配合使用. 摘要认证是另一种HTTP认证协议,它试图修 ...

  5. Oauth认证-新浪微博开发(上)

    最近几天一直在学习新浪微博的授权验证,在论坛上下了个例子,也找到了相关的博客文章..以为很简单能搞懂,但是费了很长时间,还是一头雾水..后来想想,其实别人提供的只是一些接口.方法,而我对授权的过程并没 ...

  6. android 除了webview 浏览器控件,android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器...

    前面的文章的OAuth认证过程在获取oauth_verifier码是是通过调用android系统带的浏览器进行用户授权认证的, 具体见:android开发我的新浪微博客户端-用户授权页面功能篇(3.2 ...

  7. OAuth认证(完整版)

    拿人人的OAuth认证举例吧.其实这个认证就是原则上实现了程序开发人员和用户的用户名密码的分离,使密码不会被第三方获取.    只有被认证后,才能有权限调用人人网的接口方法.首先要去人人的开放平台去注 ...

  8. 新浪微博客户端 -- OAuth认证

    OAuth的基本概念,OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用 ...

  9. 802.1X(Dot1x)认证原理

    802.1X(dot1x)技术简介 802.1X认证,又称为EAPOE(Extensible Authentication Protocol Over Ethernet)认证,主要目的是为了解决局域网 ...

最新文章

  1. 绿色噱头VS数据中心的机会
  2. 好的视频编解码网址和博文地址
  3. 以太币(Ether)的单位
  4. MRCTF2020]你传你码呢
  5. Kafka创建查看topic,生产消费指定topic消息
  6. 2020-10-25(动态调试SMC代码)
  7. 网页挂码方式html css,CSS代码 解决网页挂马问题
  8. 1.13编程基础之综合应用_30_1的个数
  9. linux 卷标设置与管理
  10. 通过SharedPreferences方式存储复杂数据
  11. springBoot 注入@Slf4j,框架中的方法无法调用。。。
  12. 猜一猜,我国第一次大规模应用二维码是什么时候?
  13. iOS 用内置浏览器Safari 打开网页
  14. CAD标注如何提取下来?这样提取很容易
  15. .net 下如何将文档文件(Word, Pdf等) 中的文本提取出来
  16. 华为手机刷微博体验更好?技术角度的分析和思考,Android基础72问
  17. 如何看待药物治疗过程中的副作用?
  18. 梦幻鸿蒙石任务,梦幻西游鸿蒙石之鉴任务攻略 鸿蒙石之鉴攻略
  19. 深度解密 Python 列表的实现原理
  20. 运用arcGIS ArcPy推求管网节点高程

热门文章

  1. Nodejs框架+uniapp前端微商个人相册多端小程序源码
  2. 仿英雄联盟比赛直播网页模板
  3. 帝国CMS二次元COS漫展信息分享网站模板
  4. JeewxBoot微信管家平台源码v1.3
  5. 悟透JavaScript
  6. flex3 接受外部参数
  7. AOP(基于注解对AspectJ操作)
  8. 视觉SLAM中使用Matlab标定摄像头
  9. 程序员必备软技能之科技趋势(一)
  10. Osg/OsgEarth—— 无法打开文件osgGA/MatrixManipulator错误