当前位置:主页 > 高防服务器 >

云盾高防采集_ddos流量攻击防御_解决方案

时间:2021-06-11 22:20来源:E度网络 作者:E度网络 点击:

云盾高防采集_ddos流量攻击防御_解决方案

你可能还记得我在介绍文章中提到的一个项目是SRC:CLRs内部网被称为伊奥诺。我没有从头开始构建iono,基本代码是我的工程师同事在一个周末的公寓里破解出来的,所以你可以想象,阿里防御ddos,我发现了一些问题,试图弥补他们的不足之处。我的任务之一是升级登录系统,使其只允许用户登录@sourceclear.com网站通过谷歌认证发送电子邮件。2014年2月,openidfoundation宣布了openidconnect标准,就在同一天,Google宣布他们将在明年接受这一变化,并缓慢地抨击旧的登录方法,包括OpenID2.0标准,这是新标准的前身。现在,当iono建成后,我负责升级的功能当然存在,但是它只有两个问题:iono用于执行google身份验证的passport google npm包已过期,仅使用OpenID 2.0,从2015年4月起不再支持该软件包。为了检查用于登录的电子邮件是否@sourceclear.com网站电子邮件,打电话给用户信息电子邮件已生成终结点。对任何userinfo呼叫的支持将在2015年10月停止。这显然不行。我不得不修改这两件事发生的方式,以便在未来的许多年里使用iono。首先我处理了过时的包裹。从打开的GitHub问题的数量、拉请求的数量以及包GitHub页面上缺少活动可以清楚地看出,包不会被更新。在一份关于升级包以适应新身份验证的公开罚单中,GitHub用户@ilkkao在一篇博客文章中发布了一个链接,介绍了他切换到另一个软件包passport google oauth的过程。我三思而后行,按照指示换了新包装。我很快意识到,这个包裹不能解决我的问题。查看第72行的oauth2.js文件,您会发现:....Strategy.prototype.userProfile=函数(accessToken,完成){这是你要的https://www.googleapis.com/oauth2/v1/userinfo',accessToken,函数(err,body,res){if(err){return done(new InternalOAuthError('failed to fetch user profile',err));}....这个请求正在调用第2期中提到的userinfo端点,所以我再次寻找答案。我尝试测试的下一个包是github user@sqrrrl的passport google plus包。在将它放入代码后,我在本地主机上测试它,结果发现了一个错误。我面前的错误消息说我的组织没有启用Google+。为了避免需要重新启用Google+,我转而使用另一个npm包。这次是github user@mstade的passport-google-oauth2包。我仍然无法允许用户登录,我需要启用Google+。一旦启用了Google+,我就可以通过将范围设置为https://www.googleapis.com/auth/plus.login他们的个人资料又回到了第二期!现在我有了用户的个人资料信息,你会认为第二个问题会很轻松,对吗?不完全正确,我得到的信息如下(为了隐私和可读性,我用笑脸交换了一些信息){"provider":"谷歌","id":","displayName":"凡妮莎·亨德森","名称":{"familyName":"亨德森","givenName":"凡妮莎"},"真的":isPerson,"isPlusUser":正确,"language":"en","gender":"女","照片":[{"value":","type":"默认值"}],"_raw":":","json":{"kind":"加#人","etag":"\":)"","gender":"女","objectType":"对象类型","id":","displayName":"凡妮莎·亨德森","名称":{"familyName":"亨德森","givenName":"凡妮莎"},"url":","图像":{"url":","isDefault":真},"isPlusUser":正确,"language":"en","圈数":0,"已验证":错误}}你注意到有什么东西漏了吗?如果你说的电子邮件你是正确的。包里还给我的资料里没有一封邮件会让我的下半部分任务几乎不可能完成!我在Google+迁移文档中找到了这个有用的部分,其中说"用人。得到". 很自然我就去了人。得到文件,找不到我要找的信息。没有在这个页面上的任何地方,我需要有什么作为我的范围或端点,以获得我想要的结果:用户电子邮件。经过一段时间的努力https://www.googleapis.com/plus/v1/people/me为了工作(这是徒劳的),我再次开始在谷歌文档中寻找我的答案。在Google+平台文档>API参考>HTTP API>授权API请求下,我找到了我的答案。而不是使用https://www.googleapis.com/auth/plus.login或者https://www.googleapis.com/plus/v1/people/me正如我之前所想的那样,我只需要将我的范围设置为https://www.googleapis.com/auth/plus.profile.emails.read。现在,当用户登录时,将返回以下信息:{"provider":"谷歌","id":","displayName":"凡妮莎·亨德森","名称":{"familyName":"亨德森",阿里ddos云防御,"givenName":"凡妮莎"},"isPerson":没错,"isPlusUser":正确,"电子邮件":[{"值":)@sourceclear.com网站","type":"账户"}],"电子邮件":)@sourceclear.com网站","gender":"女","照片":[{"value":","type":"默认值"}],"_raw":":","json":{"kind":"加#人","etag":"\":)"","gender":"女","电子邮件":[{"值":)@sourceclear.com网站","type":"账户"}],"objectType":"人","id":","handerson":"显示名","名称":{"familyName":"亨德森","givenName":"凡妮莎"},"url":","图像":{"url":","isDefault":真},"isPlusUser":正确,"圈数":0,"已验证":错误,"域":sourceclear.com网站"}}有了这些信息,我就可以确保用户使用@sourceclear.com网站以2种方式中的一种发送电子邮件,方法是使用域值或将电子邮件存储在emails[0]中并检查它是否包含'sourceclear.com网站"在里面。我选择了前一种方法;使用emails[0]中存储的电子邮件地址。首先,ddos速器防御,我从JSON响应中提取了'emails'属性,并将其作为email值添加到我的user对象中。如果(profile.hasOwnProperty公司("电子邮件"){用户电子邮件= 个人资料.电子邮件[0]值;}现在我已经保存了这个值,我使用search方法检查返回的电子邮件是否包含'sourceclear.com网站'. iono的最终目标之一是使平台开源,任何人都可以使用它,为此,ddos攻击种类和防御方法,我创建了一个配置文件,白名单.js,其中'sourceclear.com网站'正在从中读取。如果您好奇,我的配置文件如下所示:module.exports.whitelist.白名单={电子邮件:'sourceclear.com网站'};我选择这样做,以便在重新调整产品用途时,新用户不必搜索代码来寻找这个值,并且可以从配置文件轻松地更改它。如果需要,它还允许在代码的其他区域使用此值。伊奥诺是一个节点.js使用帆.js框架,更换ip防御ddos,以便调用我的电子邮件价值白名单.js,存储在iono的src主文件夹中的"config"目录中sails.config.whitelist。使用了电子邮件链。如果搜索函数没有找到任何结果,iono将抛出一个错误,如下代码所示:如果(user.email.toLowerCase().搜索(sails.config.whitelist。电子邮件)====-1){return next(new Error('该电子邮件与SourceClear.com网站'));}所以,总而言之,升级我们公司内部网iono上的谷歌认证的过程是一个有趣的工作项目。这让我探索了一些更受欢迎的passport npm包背后的代码,在GitHub机票上发表了一些评论,其他人和我有同样的问题,我的头撞了几下我的桌子,最终它导致了一个登录系统,将兼容可预见的未来!请留意我的下一篇博客,我们将在这里探讨作用域和端点的概念,有什么区别以及我们如何使用它们!

推荐文章
最近更新