Member-only story
每个第三方登录中的OAuth流程漏洞
Coders Stop 著
7分钟阅读·6天前
14
Press enter or click to view image in full size
你知道那个“使用Google登录”的按钮吗?就是我们所有人几乎想都不想就会点击的那个,因为谁还想再多记一个密码?对,就是它。它基于OAuth 2.0构建,其中有一个隐藏在我们眼前的问题,大多数开发者完全忽略了。
我花三周时间为一个金融科技客户审计身份验证流程,结果让我彻夜难眠。不是因为OAuth从根本上就是坏的(它实际上相当可靠),而是因为我们大多数人的实现方式给攻击者留下了一扇敞开的门。
我们热爱的便利性
第三方身份验证现在无处不在。Facebook、Google、GitHub、Twitter……随便选。其承诺很简单:用户获得无摩擦的登录体验,而我们开发者则可以摆脱管理密码、重置密码以及所有那些麻烦事的负担。
但有趣的地方来了。OAuth最初并不是为身份验证设计的。它是为授权而构建的。“这个人是不是他声称的那个人?”(身份验证)与“这个人是否有权限访问这个资源?”(授权)之间存在巨大差异。
大多数开发者把OAuth当作它能同时完成这两项工作。这是第一个错误。 CSD0tFqvECLokhw9aBeRqiOm8MMY3MZAYZWovdXUC40HQXvg9ZqpjMbugE+02d86RbrMwfp6OnNJqUQsjZv/EOBdhu9peWS8VdwgHR42ywABgRqIc18tuTkChS67X4ba1PQZvBQuW4CJ2z2zuo9c/A==