首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

绕过GitHub的OAuth授权验证机制($25000)

我对GitHub的主要测试方法为,下载试用版的GitHub Enterprise,然后用我写的脚本把它反混淆(deobfuscate),然后观察GitHub的 Rails 代码查看是否有一些奇怪的行为或漏洞...有意思的是,“Authorize”按钮对应的终端URL链接也是/login/oauth/authorize,它和授权验证页面是一样的URL,GitHub会根据HTTP请求方法的响应来确定如何执行下一步操作...自HTTP协议被创建以来,HTTP的HEAD方法就一直存在了,但是人们对它的使用较少。当服务器收到HEAD请求时,只会向客户端发送回响应头,而不发送响应体,这有一些特殊用途。...这看上去很好,但却是一个漏洞百出的抽象概念,如果此时控制器发出request.get?的请求,对于这样的请求,因为现在控制器是HEAD请求,而不是GET请求,所以将会返回false。...但当HEAD请求到达控制器后,控制器会意识到这不是一个GET请求,所以控制器会检查它是否是一个经过授权验证的POST请求,之后, GitHub会找到请求中指定OAuth授权流程的APP,并给予相应的访问授权

2.8K10

像一名教育者一样思考代码质量

但如果你不是一个 Rails 开发者... 你不会知道这些!你所看到的只是一个空方法,它似乎什么也没做!更重要的是,你没办法搞明白。...但是在其他一些情况下,你可以用 Rails 做一些古怪的事情,而只有那些正好掌握这些部落知识的人能够理解。 当你在一个拥有经验丰富的 Rails 专家的团队工作中时,这不是个问题。...团队的其他人大部分都是 Rails 人员。 我对于自己对 directives 的使用感到少许得意。但我的上司叫我停止使用这些东西,坚持使用正常的 controllers。...他甚至提到,他的理由是因为这是大部分软件开发人员如果进入一个代码库期待看到的编程方式。 当时,我认为很明显,他错了。我看到的 Anguar 专家撰写的所有视频和书籍,都告诉我这些是最佳实践。...中写的有些东西: 几年前,一位著名的科学家曾告诉我,他是如何以比平时低得多的技术水平为自己的领域撰写一篇解释性文章的。他认为这对该领域以外的学者,甚至报道者,都会有用。

76130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Phoenix 1.3,迈向正确的道路

    而 phoenix,是 elixir 语言下的一个脱胎于 rails 的框架,可以帮助我们快速打造 webapp。...我在 rails, django, phoenix,你们错了 一文中提到: 说句不太好听的话,rails 等 framework 很容易引导人们走向一个 web 前端为中心的歧路。...这里所说的「前端」,是指后端的前端。我们应该根据需求,先把业务模型构建出来,各个服务构建妥当后,再使用 rails 等打造前端。...在这样的代码里,我们看不清系统各部分的边界在哪里。新的代码的插入是那样的顺理成章,以至于一切良好的设计都随着边界的模糊而变得混乱不堪。理想的状态是这样: ?...这让我在 rails, django, phoenix,你们错了 一文中提到的例子,从结构上打造起来方便很多: ?

    1.6K150

    从Web开发者的视角来解读MVC架构

    它负责面向用户的显示,以及让用户如何与应用程序进行交互。 因此,视图通常包括:HTML、CSS、以及来自控制器的各种动态值。在应用运行时,控制器会与视图、以及模型保持通信。...对于Ruby on Rails而言,我们可以使用嵌入式的ERB(https://ruby-doc.org/stdlib/libdoc/erb/rdoc/ERB.html)。...当然,控制器也可以在不传递数据的情况下加载某个视图。而此处需要有一个带有HTML和CSS的纯Web页面,就不是真实的模板逻辑。 下面是一个非常简单的例子(或称流程图)。 ?...接着,“路由器”开始调用基于该路由的特定控制器方法。因此,如果需要使用或获取一些数据的话,控制器需要与模型进行交互,而该模型也会与后台的数据库进行交互。...结论 综上所述,我们可以这样来理解MVC架构:模型是某种数据结构,控制器是流量控制器的一种形式,而视图则是用户看到并与之交互的部分。大家各司其职,让程序分工明确、条理清楚。

    3.5K20

    数据挖掘工程师:如何通过百度地图API抓取建筑物周边位置、房价信息

    title=jspopular 那么肯定需要自己写JavaScript脚本与百度API进行交互,问题是:这种交互下来的数据如何储存(直接写进文本or使用sql数据库?),如何自动化这种交互方式。 ?...2.流程详解 js代码在用户浏览器中执行,因此爬取的主要部分逻辑都需要写在js脚本里,而rails服务器端需要完成的是获得当前需要抓取的房屋数据以及储存js抓取的数据。...首先由用户在浏览器中点击开始按钮,激活GetDataFromServer()方法,浏览器向rails服务器发送请求,服务器的return_next()方法返回当前需要抓取的房屋数据(主要是街道或者小区的位置信息...house_data提供而坐标由house_loc给出, idx记录着现在查询的关键词的索引. sendData使用ajax post方法提交数据, 当提交成功后, 通过调用SearchNearby并传递下一个关键词的...爬取后导入到rails的数据库,就可以使用上面的方法便利抓取地理位置信息。

    4K90

    Rails路由

    用于生成路径和URL地址的辅助方法 在创建资源路由时,会同时创建多个可以在控制器中使用的辅助方法,如上面的资源路由会创建以下方法: photos_path:返回值为 /photos new_photos_path...经验告诉我们嵌套资源层级不应该超过一层,而避免嵌套过深的方法之一就是把动作集合放在父资源中,这样既可以表明层级关系,又不必嵌套成员动作: resources :articles do resources...方法时传入一组对象,Rails会自动确定对应的路由: Rails能够识别各个实例,自动使用...当然在使用 link_to 等辅助方法时,可以只指定对象,而不必完整调用 url_for 方法: <%= link_to...: get '/stories/:name', to: redirect('/stories/%{name}'), status: 302 使用 root 方法 root 方法指明如何处理根路径的请求:

    4.5K20

    DHH:2017年Rails 框架还值得学习吗?

    无论如何, 这就是 Rails 核心原则的巨大吸引力....我已经在其他地方进一步详细阐述了在Rails 核心原则中关于配置的约定方法, 以及点菜 / omakase冲突的说明, 和集成系统的吸引力以及 Rails 社区的其他核心价值....我认为这或许有点关系, 但区别还是非常大, 如果因此而错失 Rails, 这个决策真的是因小失大....实际上, 最后一步输出 HTML 仅仅是我们关注的很小一部分. 所以, 如果你认为客户端的 MVC 框架如 React, Angular 或者其他框架是未来, 你仍然是 Rails 的目标用户....而且, 最为重要的是, 我已经把 “樱桃” 留下了. 现在就开始使用 Ruby 吧. 就算这些年是人们重新发现函数式编程和不变性数据理念价值的时代, Ruby 仍然是我遇到过最漂亮, 最奢华的语言.

    2K90

    畅谈百年编程语言

    人们流行这样的说法:“一种语言要想在一百年后仍然可用,它需要有良好的性能。”你将如何评估这样的说法?你要怎么开始呢? 这并不是反问。让我们开始评估吧。 最古老的语言能告诉我们什么?...大多数情况下,我的意思就是“消亡”,正如拉丁语的消亡。有一些小而孤立的讲拉丁语的学术和宗教团体。但是,对于大多数人来说,这并不是一种普通的日常语言。...它完全可以被更好的后代吞噬,它们带走了它的整个用户群。“Algol 家族”中包含了远亲,如 Perl,以及使用较少的 Delphi 这样的分支。...这是关于用户社区,而不是语言作者或特性。 消亡意味着什么? 在我们深入讨论之前,我想先谈谈“消亡”一词在编程语言中的一个明显的、有点愚蠢的用法。 编程语言是由人类编写的,是给人类的。...当你听到有人说“Rails 已经消亡”时,你可以肯定他们并不是指“没有程序还在运行 Rails”或“没有公司还在使用 Rails”或“没有新项目用 Rails 编写”。

    27830

    使用Ruby on Rails和Bootstrap开发社交网络平台的详细教程

    在这篇博客中,我们将深入介绍如何使用Ruby on Rails(RoR)框架和Bootstrap前端框架共同开发一个简单而功能丰富的社交网络平台。...Ruby on Rails提供了强大的后端支持,而Bootstrap则提供了灵活的前端组件,使得我们可以轻松创建现代化的用户界面。...你可以使用以下命令进行安装:gem install rails步骤2:创建Rails应用使用以下命令在终端中创建一个新的Rails应用:rails new social_network然后进入应用目录:...db:create步骤4:生成用户模型和控制器使用以下命令生成用户模型和控制器:rails generate scaffold User name:string email:stringrails db...通过这个简单的例子,你可以深入了解如何使用Ruby on Rails和Bootstrap开发一个社交网络平台。

    23810

    化繁为简的企业级 Git 管理实战(五):二进制大文件的版本控制

    /your-group/your-repo.git 用这种方法确实减少了一定的时间,但耗时依然可能很长。...方案三:浅克隆 大部分人使用 SDK 时并不需要检出历史版本,对这些人而言,只需要拿到需要的一个快照就可以满足构建需求了。因此方案三就是限定克隆时的深度来加快拉取速度。...对于框架的开发人员,为了能够提交新内容,依然需要花长时间去克隆完整的仓库。因此浅克隆依然不是一个完美的方案。...所以我把这个仓库的 Zip 包下载了下来: 这个类是在其中一个 jar 包里定义的,而解压发现 jar 包明明已经下载下来了: 尝试使用 JD-Gui 打开这个 jar 包,发现这个包打不开。...我认为这个是 Gitlab 的问题,于是给 Gitlab 提了一个 bug ,而一个开发人员告诉我类似的问题在去年 3 月份已经有人提过,而目前还未修复 --bb 2 2Coding 也有相同的问题,哈哈

    1.9K70

    慢的不是 Ruby,而是你的数据库

    其中一部分时间是由启动时间(在这个用例中很难测量)和 JIT 编译器占据的,而另一部分则是 Ruby 中垃圾回收机制的任意启动和停止所有进程所造成的问题。...虽然有些 Ruby 项目不使用 Rails,但大部分生产中运行的 Ruby 代码都是基于 Rails 开发的。...其中一个 Rails 的问题是它与数据库的高度耦合(也可以说是一种好处)。Rails 专注于掌控数据库的一切。没有数据库,Rails 将毫无用处,甚至可能阻碍工作进展,而不是提供帮助 [2]。...针对 Rails 的基准测试已经进行了许多次。我现在将获得更多元数据,而不是继续讨论整个堆栈的 “基准” 和火焰图。少谈数字,多谈概念。因为对于 Rails,我确信性能问题是概念性的。...我曾在一个拥有百万级用户的应用程序中,导致数据库服务器集群崩溃:原因在于一个无关控制器的简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。

    15130

    利用Kamal摆脱Kubernetes的复杂性

    DHH(他以缩写而闻名)去年宣布出于纯粹的经济原因离开了云。如果你有能力在自己管理的机架上运行软件(就像以前每个人都不得不做的那样),显然可能比使用亚马逊 AWS 更便宜,特别是如果你有固定的需求。...Kamal(是的,又一个模糊的海事起源名字)使用了 Ruby,这是 37Signals 的内部语言,我偶尔还会涉猎一下。...,所以我们只是看一下 Kamal 是如何看待世界的。...在 DevOps 环境中,不是每个工程师都应该可以访问这些文件,但每个人都需要知道它的作用。 然后,我们使用 kamal setup 启动系统。...如预期的那样,如果我现在执行此操作,系统会迅速告诉我没有内容可以交流: 那么,Kamal 如何处理所有指定和可用的服务器呢? 连接到服务器后,如果需要,它将安装 Docker 和 curl。

    15410

    Web Hacking 101 中文版 十六、模板注入

    例如,jinja2 存在任意文件访问和远程代码执行,Rails 的 ERB 模板引擎存在远程代码执行,Shopify 的 Liquid 引擎允许访问受限数量的模板方法,以及其他。...展示你所发现的严重性实际上取决于测试什么是可能的。并且虽然你可能能够求解一些代码,它可能最后不是重要的漏洞。例如,我通过使用载荷{{4+4}}来发现了 SSTI,它返回了 8。...与 SSTI 相反的是客户端模板注入(CSTI),要注意这里的 CSTI 不是一个通用的漏洞缩写,像这本书的其它缩写一样,我推荐将其用于报告中。...基于他们的 WriteUp,RoR 的控制器在 Rails APP 中负责业务逻辑。这个框架提供了一些不错的健壮的功能,包括哪些内容需要渲染用户,基于传给渲染方法的简单值。...但是,当你让 Rails 渲染一些东西,并且它找不到合适的文件来使用,他就会在RAILS_ROOT/app/views,RAILS_ROOT和系统根目录中搜索。 这就是问题的一部分。

    3.7K10

    如何在Ubuntu 14.04上使用Unicorn和Nginx部署Rails应用程序

    由于Unicorn不是设计成能够直接被用户访问的,所以我们将使用Nginx作为反向代理,它将缓冲用户和Rails应用程序之间的请求和响应。...教程准备 本教程假定您将在部署应用程序的用户上安装了安装了以下软件的Ubuntu 14.04服务器(没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器...管理环境变量的一种简单方法是使用rbenv-vars插件,我们可以使用它来在运行时将密码和机密加载到我们的应用程序中。...一种简单的方法是将其添加到您的应用程序Gemfile中。...您已使用Nginx和Unicorn部署了Ruby在Rails应用程序的生产环境。 如果您希望改进生产Rails应用程序部署,您应该查看我们的如何使用Capistrano自动部署的教程系列。

    4.3K00

    Groovy on Grails 交流活动

    Grails 确确实实引进并统一了一些 Ruby On Rails 不错的创意,Grails 将它们中的一部分应用到了 Groovy/Java 世界里,但更添加了许许多多 Ruby 中根本不存在的新特性与新概念...“Grails 使用了一种解释型语言(Groovy)。”Groovy 是在运行阶段被 Java 虚拟机编译成字节码的,它绝对不是解释执行的——从来都不是,并且以后永远也决不会是。我说了 “永远” 吗?...当然,在开发的过程你大可使用 Grails 绑定的 Jetty 容器,这样完全可以做到开发的零配置与无需容器重启的动态载入功能。 “我的经理是不会让我用 Grails 的,因为它不是 Java。”...(注:看起来我是有些过于喜形于色和小孩子气了,其实我不是这样的。) “Grails 只适用于常规的增删改应用程序。”...我完全可以理解 Ruby On Rails 的支持者们想要保护他们的商标,但他们应该选择一种合法手段,而不是主动疏远别人。 再次申明,以上是我们团队的意见,也是我的意见。

    1.7K20

    如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序

    由于Puma不是为用户直接访问而设计的,因此我们将使用Nginx作为反向代理,以缓冲用户与Rails应用程序之间的请求和响应。...没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...自建服务器难免会遇到这样的问题,配置SSL很麻烦,虽然对一部分人来说这也是一种乐趣,但是如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用的是分布式版本控制系统(如Git),它们很容易暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。 保存并退出。...管理环境变量的一种简单方法是使用rbenv-vars插件,我们可以使用它来在运行时将密码和机密加载到我们的应用程序中。

    5.4K10

    GitLab安装与基础使用

    Step7.登录成功的界面,是不是有种疯狂的想写代码的冲动; ? WeiyiGeek....# 获取当前安装的版本补丁 git clone https://gitlab.com/xhang/gitlab.git cd gitlab # 查看全部分支版本 git branch -a gitlab_version...WeiyiGeek. 7) 项目创建与初始化 Gitlab的git地址组成与github是一致(别告诉我您不知道): gitlab地址+用户/群组+自定义名字 Gitlab项目的可见类型有三种级别。...用户权限为开发者而默认创建的是私有的项目,默认是对master分支开启了保护机制,需要对其项目的Branch分支设置 Allowed to merge | Allowed to push为Development...://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum 升级方法:先升级到当前大版本最后一版(这里是我的建议,一般差不多最后几版就可以了),接下来就是跨大版本的升级

    8.5K20

    【软件设计原则】CUPID——快乐的编码

    可能有许多这些特性,重叠和相互关联,并且有很多方法可以描述它们。我选择了五个支持我在代码中关心的大部分内容。收益递减;五个就足以成为一个方便的首字母缩略词,而且足以记住。...这就产生了规则追随者和规则执行者的“有界集合”,而不是具有共同价值观的人的“中心集合”。2 相反,我开始考虑特性:代码的品质或特征,而不是要遵循的规则。特性定义要移动的目标或中心。...代码总是可以改进的。 作为人类,特性需要从人的角度来阅读,而不是代码。CUPID 是关于使用代码的感觉,而不是对代码本身的抽象描述。...应用程序框架 Ruby on Rails 在 2000 年代初期通过将其构建到其工具中而普及了这种方法,Rails 的广泛采用意味着许多后来的框架都复制了这个想法。...下面是生成的 Rails 应用程序的部分目录布局,重点关注开发人员将花费大部分时间的目录(应用程序)。在撰写本文时,完整的框架运行到大约 50 个目录,其中包含 60 个文件7。

    53110

    企业自建GitLab代码仓库安装与基础配置使用

    Step7.登录成功的界面,是不是有种疯狂的想写代码的冲动; [WeiyiGeek.]...# 获取当前安装的版本补丁 git clone https://gitlab.com/xhang/gitlab.git cd gitlab # 查看全部分支版本 git branch -a gitlab_version...github是一致(别告诉我您不知道): gitlab地址+用户/群组+自定义名字 Gitlab项目的可见类型有三种级别。...,可以使用国内的源(采用Omnibus方式进行升级直接rpm包部署):https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum 升级方法:先升级到当前大版本最后一版...解决思路: 方法一、重新配置一个Ldap服务把之前的数据库导进来,迁移到新的机器上然后修改Gitlab的认证服务地址。 方法二、直接修改Gitlab的数据库,对帐号的认证方式修改。

    9.8K55
    领券