启用CDN后,QQ互联登录出现异常的问题。

博客群里的网友都说网站真实IP没隐藏有巨大的被D风险。隐藏网站真实IP最简单的办法就是做内容分发网络,用户在访问网站的时候是访问就近的CDN节点,ping出来的IP也是CDN节点IP,有效阻断了对源站服务器IP的探测。

网上有很多免费的CDN可供使用,如百度云加速,但是普遍存https不支持或者收费。并且多数CDN都提供了一定量的抗D清洗服务。只不过都很低,在真实DDOS攻击下,瞬间就荡然无存了。真正有用的也就是隐藏真实IP这一个功能了。

折腾配置CDN

下午没事开始折腾CDN,网上找了一圈也没合适的,群里推荐的上海云盾,流量限制50G,目前限时免费阶段。尝试注册了一下,发现需要实名认证提交后,3个工作日审核,审核通过才能使用。接着有看了下百度云加速,发现免费版本不能支持https,需要购买专业版以上才能使用,最低的专业版1190一年。所以放弃了。鉴于网站部署在阿里云CDN上,就在阿里云上看了下CDN的产品介绍。可惜,自从12月1号就进入商业收费模式了。不想再另寻CDN了,其它服务商肯定也是要认证的,这大放假的肯定没人,所以就直接阿里云CDN吧。支付120元500G一年的量另加https的请求包50元,不知道被攻击一次,被消耗的量算不算在内了。

发现QQ授权登录异常

晚上吃完饭准备来改造登录后修改用户名和添加用户网站信息这块功能。发现点击QQ登录后,无法正常跳转到登陆后的界面,卡在callback地址上不动了。虽然我知道是CDN造成的,但是没明白问题出在哪儿,就正常逻辑开始排查代码。先把站点调试模式(TP5的app_debug)关了,然后再次登录,看到错误信息3001。这个错误码是我自己定义的改造后的qqconnect错误码。

查错并解决

查源码Oauth.php(原Oauth.class.php)发现问题出在防CSRF攻击的state上。再次尝试登录,看了下地址栏callback后的code参数和state参数一切正常。也就是说授权动作执行完成了。那么问题就出在这个比对问题上了,我是通过TP5的助手函数input获取的state。尝试dump了一下state和code。都显示为空,没有获取到地址栏上的参数,无法和程序中的state变量比对,造成的错误。以为是助手函数的问题,又原本请求了一次,还是没有,最后使用原生$_GET也还是没有请求到内容。

冥想了一下,地址栏上的信息是被构造出来的,那么我访问的数据是CDN节点缓存给我的,地址栏的数据没有和我源站产生交互,突然想到下午在折腾CDN配置的时候的参数过滤问题了。阿里云的CDN有保留参数回源的设置,并且我还在后台测试的时候传输的ID和分页参数添加过了。天呐,这是有多蠢,竟然忘了这一出。迅速进入阿里云CDN控制面板,在域名管理里面,过滤参数中设置好保留的code和state两个参数。刷新页面后重新使用QQ登录,就一切正常了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

从APM角度上看:NoSQL和关系数据库并无不同

Michael Kopp拥有十年以上C++、Java/JEE的架构及开发经验,现Compuware技术策略师,专攻大规模产品部署的架构和性能。 以下为译文: 传...

2428
来自专栏CDA数据分析师

案例分析:基于消息的分布式架构

美国计算机科学家,LaTex的作者Leslie Lamport说:“分布式系统就是这样一个系统,系统中一个你甚至都不知道的计算机出了故障,却可能导致你自己的计算...

2968
来自专栏linux驱动个人学习

SELinux 是什么?

一、SELinux的历史 SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency...

3825
来自专栏互联网杂技

什么是微服务

在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 p...

1911
来自专栏大数据架构师专家

从运维角度看中大型网站架构的演变之路

网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解。

1573
来自专栏大宽宽的碎碎念

你对Redis的使用靠谱吗?Redis的性能高,吗?Redis可以保证原子性,吗?用Redis可以实现事务,吗?用Redis可以当队列,吗?Redis适合用来做什么?

61010
来自专栏lulianqi

为什么需要多线程

对于这个问题可能很多朋友会说是为了高性能,个人觉得这是误解,多线程不等于高性能,从cpu(单核)的角度上看单线程才能带来最高性能。

1622
来自专栏携程技术中心

干货 | 携程App网络服务通道治理和性能优化

编者:本文作者为携程无线开发总监陈浩然。陈浩然,计算机博士,2008年iOS SDK发布后,投身移动互联网。先后在外企、创业型和国内一线旅游公司从事无线App的...

4505
来自专栏微服务

基于STS和JWT的微服务身份认证

自 Martin Fowler 提出微服务架构的概念后,这个名词就一直比较流行,总是成为众多技术论坛和公众号的讨论热点。很多互联网和软件公司都在将原有的整体架构...

4215
来自专栏沃趣科技

沃趣科技火线救援某公安系统核心业务数据

求助电话 只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。 案发现场 其核心数据库,由于存储突然断电,导致数据库实例...

3597

扫码关注云+社区

领取腾讯云代金券