云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港带宽_wps数据库_高性价比

小七 141 0

储物柜安全:与Vlocity UI架构师Matt Goldspink的闪电平台开发人员对话

新闻编辑室回到编辑室储物柜安全:与Vlocity UI架构师Matt Goldspink的闪电平台开发人员对话这篇文章是一系列文章的开始,这些文章将重点介绍我们的开发人员社区对Lightning UI平台及其功能领域的体验。2019年5月23日首席工程师14分钟阅读Nirankush Panchbhai为Salesforce开发者博客撰写的原创文章在这篇文章中,我很高兴与大家分享一段关于Lightning Locker和整体Lightning安全性的有趣对话,这段对话是Vlocity的开发者开拓者和UI架构师Matt Goldspink。Matt分享了他如何看待web上的UI安全性,解决了关于Locker的常见误解,并提供了JavaScript兼容性和安全性方面的见解。这是一次非常棒的谈话,我认为这对任何在Salesforce平台上开发的人都会有帮助。作为开发人员,安全性对您意味着什么?我已经做了超过15年的网络开发者。在那时候,浏览器的格局发生了巨大的变化。有一件事一直是个问题,但近年来更是如此,那就是需要强大的安全性。我曾与金融行业的安全团队密切合作,我一直对了解黑客可能通过攻击窃取用户凭证或信息有一点热情。与Matt和他的开发团队的密切合作使我们Salesforce能够改进储物柜,并计划未来的更新,从而提高整个社区的Lightning安全性。–Nirankush Panchbhai,Salesforce产品管理副总裁用你们自己的话说,你们认为储物柜是什么?Locker允许来自两个或更多不同公司的Aura和Lightning Web组件在浏览器的同一页面上安全运行。允许两个不同的公司一起运行代码的关键挑战是这两个公司彼此不信任。事实上,他们的代码甚至可能不兼容!有各种各样的风险。例如,Acme Corp可以编写一些CSS来破坏Vlocity组件的外观:或者acmecorp可以编写一些Javascript来捕获客户可能进入Vlocity Lightning组件的安全数据并将其发送到自己的服务器。这是一个复杂的问题,许多公司多年来都试图解决。通常,解决方案是将所有组件放入不同的iframe中,但这会导致很大的性能损失。储物柜是一个更优雅和复杂的解决方案。由于Salesforce拥有呈现组件的页面,所以它使用Locker安全地加载每个公司的代码。Locker可以将JavaScript和CSS的每一部分与页面上的所有其他组件隔离开来,这样a公司的JavaScript和CSS永远不会接触或访问B公司的代码,反之亦然。你从储物柜里能得到什么价值?我想到了几件事:1默认情况下是安全的。我们公司向世界上一些最大的电信公司、保险公司和政府机构销售我们的产品。我们如何处理安全问题通常是第一个被问到的问题。有了Locker,我们可以指向Salesforce的解决方案,以及它的所有文档和审计。这是一个我们能够在任何讨论中尽早解决的问题,因为我们客户的安全团队能够看到并详细了解解决方案。2第三方JS库隔离。在锁柜之前,我们的JavaScript代码使用了许多不同的开源库。例如,我们的框架做了大量的日期操作工作,所以我们使用力矩.js. 不幸的是,由于浏览器中JavaScript的工作方式,如果我们使用的是力矩.js,我们的客户也必须使用相同的版本。如果客户还需要其他版本的力矩.js,然后我们需要做大量的工作来检查不兼容性。它立即成为一个风险很大的更大的项目。储物柜是一个更优雅和复杂的解决方案。由于Salesforce拥有呈现组件的页面,所以它使用Locker安全地加载每个公司的代码。–Matt Goldspink,Vlocity用户界面架构师储物柜干净利落地解决了这个难题。如果需要我们的代码力矩.js2.10.0,那么Locker将允许我们使用该版本并将其隔离,以便它只在我们的组件内部使用。如果我们的客户有其他需要不同版本的组件,那么他们可以安全地在组件中加载该版本,而不必担心冲突。过去所有这些图书馆冲突的问题现在都消失了。不过,储物柜并不总是那么顺利,对吧?储物柜的早期释放是一场斗争。它有许多限制,影响了一些人所谓的标准浏览器功能。例如,某些浏览器API不受支持,因此许多第三方库如d3.js和角度.js不会有用的。这使我们无法使用储物柜。然而,储物柜已经成熟多年,这些限制已经消失。关于储物柜你揭穿了什么神话?"我不能使用jQuery"这是因为有人认为,因为您在浏览器中没有访问整个文档的权限,所以选择器API将无法工作。好吧,正如我们之前所看到的,储物柜足够聪明,可以让全球document.querySelector但将结果缩小到仅包含在组件中的那些元素。这意味着jQuery可以工作!然而,在2019年,一个更大、更有趣的问题是,"我甚至需要jQuery吗?"浏览器自诞生以来已经走过了漫长的道路,jQuery帮助的大多数功能现在都是浏览器的标准。查看一下您可能不需要jQuery,以了解如何在没有jQuery的情况下进行操作的示例。"我不能使用d3.js"D3是一个非常流行的数据可视化框架——不幸的是,Locker的早期版本对SVGAPI有一些限制,这意味着它不能工作。这些限制已经解决了,现在您可以编写复杂的数据可视化,并在Locker中运行它们。您可以在储物柜内进行拖放和任何类型的复杂交互。"我不能使用React、Angular、Vue等"实际上,React将在Locker中运行,它不需要在iFrame或Lightning容器组件中运行-同样的情况也适用于角度.js版本2+和Vue。另一方面,由于js区polyfill,它试图覆盖某些浏览器全局参数。不幸的是,这是储物柜中的一个拦路虎,因为如果你改变全局,那么你就是在为其他每个组件做这个,不管它们是否使用角度。然而,与jQuery一样,我们需要停下来问问自己,这些框架现在是否有必要。随着Lightning Web组件的引入,我们拥有了所需的所有数据绑定和基于组件的体系结构。它也比其他开源框架更接近浏览器标准。"我无法像innerHTML那样访问标准DOM API"这是另一个拦路虎,我们听到许多开发人员提到,这在一定程度上是真实的。正如我们看到的角1和js区,有些东西被锁定了,但是被锁定的api使组件开发变得不安全。为了了解Locker中允许和不允许的内容,我们查看lockerapi查看器。在这里您可以看到哪些API是完全受支持的(白色),哪些API的行为稍有不同,因此可以安全地在储物柜中使用(黄色),最后,在储物柜中被认为危险或不受支持的API(红色)。我们发现现在几乎所有需要使用的API都得到了支持,而那些不受支持的API也被锁定,以帮助防止安全问题。"我不能使用Eval或创建动态函数"在一些非常有效的情况下,需要eval或dynamic函数。例如,许多模板库需要使用动态函数。对我们来说,这是一个严重的阻隔了很长一段时间,直到18年夏天发布。然后Salesforce的一些向导找到了一种方法来创建eval和dynamic函数的储物柜安全版本!这适用于涵盖大多数情况的严格间接评估。你觉得还缺什么?实际上,我们正处在一个可以实现我们所有功能的地方。我们期待的是速度的提高。在Locker中引入了许多代理,我们在处理大型数据集时发现了一些性能问题,但我们知道Locker团队正在努力解决这些问题。我认为我们最期待的不是Salesforce,而是浏览器供应商能够本地支持更多这些安全功能。我们知道Google、Apple、Microsoft和Mozilla需要做很多工作,以便在这些组件中提供JavaScript的安全隔离。但是现在,我们对Locker的位置以及结合了Lightning Web组件的Salesforce开发平台的方向感到非常兴奋。在我们公司,有很多伟大的项目都将从中受益。结论与Matt和他的开发团队的密切合作使我们Salesforce能够改进储物柜,并计划未来的更新,从而提高整个社区的Lightning安全性。非常感谢Matt抽出时间和大家分享他的想法,如果您对我们如何改善我们产品的开发体验有什么想法,请让我们了解一下开拓者社区。如果您下周将在旧金山参加TrailheaDX'19,并且对这个主题感兴趣,那么Salesforce设计师Jean-Francois Paradis将为您介绍一个主题为"让我们揭穿储物柜的神话,并创建一个安全的生态系统"的演讲,如果您不能加入我们