作者的注:由于嵌入问题的问题,这些帖子中不存在图像。请visit the original post获得最佳体验。
芝加哥以多种原因而闻名,包括the Bears,特定的b style of hot dogs,当然还有 for giving the world skyscrapers。 PHP也以传奇建筑而闻名,是通过框架的基础语言for 77.5% of the web,例如 Drupal, Drupal,And WordPress。来自世界各地的社区成员,代表所有这些框架等等,聚集在一起。
这是第15届PHP年度大会,用户在其中分享了在Last 28 years上定义Internet的语言的知识和最佳实践。活动中有一种真正的社区意识,在一个主题演讲中,非常简洁地总结了“放开所有权”。他鼓励我们将我们的代码和社区视为我们拥有的事物,而是我们被委托以随着时间的流逝来照顾的事情。他说,我们应该用 stewardship进行思考,这是一个很好地总结该主题的词。
在活动的三天内,演讲者讲述了他们与PHP合作及其提供机会的故事。他们还参与了一些高度技术的话题,甚至显示了PHP本身的编译方式。多个扬声器还涵盖了安全性和客户数据合规性。这只是活动中的一些亮点。
API安全至关重要
在他的演讲中,“ Oauth的许多层” Keith Danger Casey带领我们通过了B OAuth,这是允许安全授权的开放协议。他通过一家高档酒店的类比描述了Oauth。
在酒店中,您向前台提供信用卡和其他形式的ID,以证明您是您说的人。他们检查您是真实且预期的。然后,他们向您发放一张酒店钥匙卡,以进入您的房间,健身房和其他任何受限区域。钥匙卡的好处是,您无需始终与完整的身份证和信用卡保持不断的身份。钥匙卡也会自动过期,并且很容易替换。
在OAuth语言中,前台是OAuth授权服务器。关键卡是您的访问令牌。您的房间以及允许使用钥匙卡访问的所有其他领域是系统资源。
此模型实现了OAuth的主要目标:
- 委托 - 共享访问而无需共享凭据。-范围和到期 - 在短时间内授予有限的访问权限。-将政策决策与执法机制分开。
基思指出的一个关键点是,Oauth本身并未指定您如何进行身份验证,只有授权。身份验证,通常是作为Authn的缩写,可以验证您是您所说的人。这通常是在打开Web浏览器并依靠Github或Google(例如On OpenID Connect)(例如Github或Google)登录的,这通常是可以实现的。作为Authz的授权,授权与“如果”允许执行操作或访问资源有关。
您最终获得了一个三步的安全过程,在该过程中,您证明自己是谁,Authn,然后获得批准以获取某些资源,Authz,然后最终使用代币提供了该过程提供的这些资源。
攻击者通常针对这些步骤中的每个步骤以及整个过程中所需的连接。在每个向量中的每个向量中进行安全思考至关重要。首先,始终使用HTTPS防止中间人攻击。适当地审查任何代币,只允许授权完成工作所需的资源,这也很重要。代币也需要短暂。寿命的时间越短。
也要保持网络钩的安全
基思还回应了许多关于安全性的经验教训,这是他在活动中的另一个演讲中“ webhooks:locs:lessons(un)学到的”。基思(Keith)负责最初的研究成为Website webhooks.fyi。在调查Webhooks时,他意识到每个公司对它们的行为略有不同,但是我们所有人都需要意识到一些潜在的安全问题。
保护有效载荷本身至关重要。从共享秘密或使用OAuth到更安全的方法,有多种方法可以实现这一目标。使用时间戳防止“重播攻击”也很重要。我们很自豪地说,为了确保客户的安全。
回到API的主题, Tim Bond在他的会话中谈到了外部威胁:“攻击者想要您的数据,他们从API中获取数据”。他说,API无处不在,包括最广泛的网站的前部。确保API的第一步将响应限制在使应用程序工作的绝对所需的数据中。 HTTPS应该始终执行,回应Keith早些时候在活动中所说的话。他还鼓励使用“ certificate pinning”,您只接受特定的,预先批准的证书。如果可能的话,他建议执行动态完整性检查,就像您可以通过the Google Play store所做的那样。
您可以通过限制攻击者来阻止攻击者。黑客通常会尝试枚举端点,尤其是在用户ID周围。有人查找user/123
,user/124
,然后在快速通话中的user/125
可能是没有好处的人。关闭它们不应干扰合法的业务。此外,他建议使用唯一的用户ID,UUID,因此为每个用户编号而不是顺序的用户编号,每个人都被分配了一个与其他用户ID无关的长随机数。例如,将它们制作为user/SINFKLDFDF51F
而不是user/123
,将使攻击者更难猜测其他用户ID是什么。
在会议结束时,蒂姆建议熟悉The OWASP API Security Top 10。对于那些想深入研究的人,他建议the free training course from PortSwigger。
数据隐私是法律
数据隐私法总是在不断发展,与最新新闻保持最新状态可能很棘手。这就是为什么我们所有人都为Microsoft的律师By Jana Sloane的“软件开发数据数据隐私” By Jana Sloane感到高兴。如何与内部法律团队交谈。在开发生命周期的早期进行这些对话可以帮助保持每个人的合规性和安全。
Jana对当今的数据隐私环境进行了简要概述。在美国,每个州都实施了自己的框架。在欧盟,由于立法,在欧盟有点清晰一些。除了政府法规外,软件开发人员还需要了解其公司必须遵守的任何合同义务。例如,确保您的新功能或产品仍将属于B SOC II的合规性很重要,因此当您尝试启动时,不会出现惊喜。
考虑访问管理,可以获取我们的数据时,我们需要确保数据
1。必要和适当的 - 我们只收集应用程序工作真正需要的。2。由适当的人员访问 - 任何人或任何可以获取数据的服务都有明确的日志和授权策略。3。正确使用 - 如果您准确地说出您将在服务条款中提供的数据,则必须将用途仅限于这些目的。4。准确保留 - 正确存储数据意味着正确加密数据并通过地理位置问题进行思考,只将其存储在数据主权法允许的地方。
最后,您应该有一个明确的政策,以便允许您保留数据多长时间。它不应该永远。您的策略还应允许用户随时删除其要求。每当您出于新的或不同的原因使用数据时,您都需要通知客户并让他们选择新用途,如果他们选择的话,请他们选择退出系统。
扫描更好的代码
Scott Keck-Warren通过讲述实时服务器上打破实时生产网站的故事,开始了他的“通过静态代码分析减少错误”的会议。他很快了解到,在到达生产机器之前,需要有一种方法来测试修复程序。
他的团队转到了手动代码分析,这比打破生产是一个进步,但容易出错。人类仍然参与了这一过程。他的团队进行了动态测试。虽然总体而言,这要可靠得多,但运行需要一段时间可靠。他们终于发现,既快速又可靠的是源代码分析或SCA的一种形式,称为静态代码分析。这允许对代码进行分析,而无需进行构建步骤,并可以节省大量的时间和资源。
他发现PHP特定的工具(例如And PHP_CodeSniffer)非常适合他们的需求,因为代码库主要是PHP。他也是粉丝和用户Of Rector,该工具“立即升级和重构您的应用程序的PHP代码。”
通过自动化,这些工具真正成功的是他的组织真正成功的原因。他最喜欢的自动测试方式是通过B git hooks。我们喜欢Gitguardian的Git Hooks,因为这就是您可以使用Leverage ggshield to prevent yourself from committing secrets。
我们也是源代码分析的忠实信徒,尤其是为了安全性。这就是为什么我们正式与 Snyk合作,以帮助我们的用户和世界通过SCA加强开发人员安全。尽管Scott引用的工具非常适合调试PHP代码以进行功能,但SNYK可以帮助任何开发人员提供更安全的代码,无论您的公司依赖哪种语言。
好的软件需要坚实的基础
当您想到构建软件的方法时,您可能会想到敏捷,瀑布甚至Devops。但是,在所有这些方法下都有一个概念,它涉及如何思考代码本身。
扎实的框架是在a 2000 paper from Robert C. Martin中介绍给世界的,定义了最佳实践for Object-oriented Programming, OOP。 OOP是现代软件语言和框架的主要方法。固体代表:
-
单一责任原则 - 每个组件只有一个责任。
-
开放闭合原理 - OOP实体应开放以进行扩展,但要进行修改。
-
liskov替代原则 - 超类的对象应被其子类的对象替换而不破坏应用程序
-
接口隔离原理 - 类不必实现不需要的成员。
-
依赖性反转原理 - 高级模块不应取决于低级模块。两者都应取决于抽象。
cori给出了这些原理的多个示例,包括PlayInstrument
类。可以想象一个用于实现方法的课程:
- toot()
- pressKey()
- bowString()
- PluckString()
让我们想象我们尝试使用“ PlayInstrument”演奏小提琴。小提琴不能toot()或pressKey()。因此,该类违反了界面隔离原则,我们应该找到更好的方法。您可以通过创建新的类来替换通用PlayInstrument
类,一种用于风乐器,一种用于弦乐器,也许是新的,也许是新的,则可以做到这一点。这些新类将更简单,可重复使用,使程序最终更具弹性,更易于在代码中实现。
一个支持多个社区的社区
PHP是互联网的核心,采用了许多服务背后的许多框架和语言的形式。正如该代码广泛使用并以各种方式使用一样,社区本身也从专注于API的安全专家到传统网站建设者到微服务架构师不等。这确实是一个全球社区,因为我们有来自世界各地的人们参加PHP [Tek]。无论您在地球上的位置,或者您在日常工作中所具备的重点,安全肯定是在于它的核心。我们很自豪地支持开发人员,DevOps和安全团队通过保密秘密来使他们的代码更加安全。如果您不确定您现在在PHP或任何其他代码中的秘密在哪里,请注册以免费启动for secrets detection并开始使用 ggshield。
开始自动化预防过程。