问题标签 [isolation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 保护数据不被 Windows 中的其他应用程序直接访问
有没有办法保护某些加密数据免受 Windows 中我自己的应用程序以外的应用程序的影响?我不关心保护它不受用户的影响——这显然是不可能的——而是我自己的非提升应用程序。
我知道我可以简单地将应用程序的核心代码作为服务运行,数据只能由系统帐户访问,但我希望我可以让应用程序在不比用户的普通令牌更宽松的令牌下运行。
此外,如果可能的话,我宁愿不依赖 .NET。
unit-testing - 如何使用 Windows 服务的 API?
我有一个大的 Windows 服务应用程序。它在时间限制的基础上执行操作。有时我需要能够在与应用程序的其余部分隔离的情况下使用它的一些功能。目前我有一组“单元测试”,它们调用各种来源并执行所需的功能。我的问题是这些不是单元测试,它们是我们公开 API 的方式。如果我们在项目中运行所有单元测试,我们将破坏我们的一些生产数据。
我的问题是如何在没有单元测试的情况下访问应用程序的某些功能?我在想也许像解释器之类的东西,你可以在其中调用功能的各个部分,但我不确定从哪里开始。
我们代码中的单元测试示例如下:
我们如何才能将其从单元测试中移出,但仍然能够运行这样的代码?
java - 如何隔离 Java EE 中的用户会话?
我们正在考虑在 Java EE 中开发任务关键型应用程序,让我印象深刻的一件事是平台中缺少会话隔离。让我解释一下这个场景。
我们有一个本机 Windows 应用程序(一个完整的 ERP 解决方案),每月从稀疏的贡献者那里接收大约 2k 个 LoC 和 50 个错误修复。它还支持脚本,因此客户可以添加自己的逻辑,我们不知道这些逻辑的作用。每个服务器节点都没有使用线程池,而是有一个代理和一个进程池。代理接收客户端请求,将其排入队列直到池中的实例空闲,向该实例发送请求,向客户端传递响应,然后将实例释放回进程池。
这种架构是健壮的,因为有这么多的稀疏贡献和自定义脚本,部署的版本有一些严重的错误并不罕见,例如无限循环、长期等待的悲观锁、内存损坏或内存泄漏。我们实现了内存限制、请求超时和简单的看门狗。每当某个进程未能按时正确响应时,代理就会简单地将其杀死,因此看门狗会检测并启动另一个实例。如果一个进程在开始响应请求之前崩溃,代理将相同的请求发送到另一个池实例,并且用户不知道服务器端的任何故障(管理日志除外)。这很好,因为有些实例在处理请求时会被虚假代码慢慢破坏。
现在考虑迁移到 Java EE,我在规范或流行的应用程序服务器(如 Glassfish 和 JBoss)上找不到任何类似的东西。是的,我知道大多数集群实现都使用会话复制进行透明故障转移,但是我们有一些小公司在简单的 2 节点集群上使用我们的系统(我们也有冒险者在 1 节点服务器上使用系统) . 使用线程池,我知道一个有问题的线程可能会导致整个节点停机,因为服务器无法检测到并安全地杀死它。关闭整个节点比杀死单个进程要糟糕得多——我们的部署中每个节点都有大约 100 个池化进程实例。
我知道 IBM 和 SAP 都意识到了这个问题,基于
, 分别。但是根据最近的 JSR、论坛和开源工具,社区上的活动并不多。
现在问题来了!
如果你有类似的场景,使用 Java EE,你是怎么解决的?
您是否知道即将推出的开源产品或 Java EE 规范的变化可以解决这个问题?
.NET 有同样的问题吗?你能解释或引用参考资料吗?
你知道一些可以解决这个问题并且值得做 ERP 业务逻辑的现代开放平台吗?
拜托,我不得不问你不要告诉你做更多的测试或任何类型的质量保证投资,因为我们不能强迫我们的客户在他们自己的脚本上做这个。我们也有紧急错误修复必须绕过 QA 的情况,虽然我们强迫客户接受这一点,但我们不能让他接受有错误的软件部分会影响一系列不相关的功能。这是关于健壮架构的问题,而不是开发过程。
感谢您的关注!
google-app-engine - Google App Engine 中的隔离
在 Google App Engine 中运行应用程序时,我会获得什么隔离?这显然是一个相当高密度的环境。我有自己的线程吗?或者可能是我用来处理我的请求的线程可能刚刚被另一家公司使用过?
我意识到,如果他们有安全权利,这不应该是我的担心。我主要想知道它是如何工作的。
erlang - Erlang digraph 原子性和隔离性保证
是否在任何地方描述了有向图原子性和隔离保证?
尤其:
- 另一个进程会在什么状态下看到有向图,如果另一个进程试图在 del_vertex 中间访问它(vertices()、out_neighbours() 等):在 del_vertex 之前,在 del_vertex 中间(即顶点被删除,边没有或边缘被删除,顶点不被删除)还是在 del_vertex 之后(即另一个进程将被阻塞直到操作结束)?
- 关于 del_vertices 的相同问题。
如果我理解正确,有向图是使用 3 个 ets 表实现的。它们之间是否有任何额外的锁定机制以使结果保持一致?
php - PHP中的隔离?
这是我考虑了一段时间的事情。
我正在创建一个应用程序,我的用户将在其中上传他们自己的自定义主题,这意味着对于任何具有基本 PHP/XSS/任何技能的人来说,都会有一个很好的机会来引起很多头痛。
我想在一种沙盒、封闭的环境中运行任何上传的文件,该环境只能访问我想要的东西(变量),没有别的。
这会是一个好的做法吗?怎么做?
haskell - 安全执行不受信任的 Haskell 代码
我正在寻找一种安全运行任意 Haskell 代码(或拒绝运行不安全代码)的方法。
一定有:
- 模块/功能白名单
- 执行超时
- 内存使用限制
我希望看到的功能:
- 杀死线程的能力
- 将模块编译为本机代码
- 缓存编译代码
- 同时运行多个解释器
- 编译器错误的复杂数据类型(在字符串中插入简单消息)
有了这种功能,就有可能实现一个能够运行任意 Haskell 代码的浏览器插件,这就是我的想法。
编辑:我有两个答案,都很好。谢谢!可悲的是,似乎没有现成的库,只有一个类似的程序。这是一个有用的资源。无论如何,我想我会等待 7.2.1 发布并尝试在我自己的程序中使用 SafeHaskell。
java - API和实现之间的分离应该是完全的吗?
在大型软件实现中,通常建议将 API 设计与其实现分开。但是在某个地方,它们必须重新连接(即,必须将实现重新连接到 API)。
以下示例显示了 API 设计和通过 INSTANCE 对象对其实现的调用:
有些人会争辩说 API 不应该引用实现代码。即使我们通过单独的文件将 API 代码与实现分开,也经常需要在 API 中导入实现代码(至少是类名)。
有一些技术可以通过使用完全限定名称的字符串表示来避免此类引用。该类使用该字符串加载,然后实例化。它使代码更加复杂。
我的问题:将 API 代码与实现代码完全分离或隔离有什么好处?或者这只是纯粹主义者试图达到完美而没有什么实际好处?
oracle - 如何实现测试隔离测试Oracle PL/SQL?
在 Java 项目中,JUnit 测试会进行设置、测试和拆卸。即使在使用内存数据库模拟真实数据库时,您通常也会回滚事务或从内存中删除数据库并在每次测试之间重新创建它。这为您提供了测试隔离,因为一个测试不会在可能影响下一个测试的环境中留下工件。每个测试都以已知状态开始,并且不能渗透到另一个测试中。
现在我有一个创建 1100 个表和 400K 代码的 Oracle db 构建 - 很多 pl/sql 包。我不仅想测试数据库安装(完全 - 从头开始创建,部分 - 从以前的数据库升级等)并确保所有表和其他对象在安装后处于我期望的状态,但也在 pl/sql 上运行测试(我不确定我将如何准确地执行前者 - 建议?)。
我希望这一切都从 Jenkins 为 CI 运行,以便通过回归测试捕获开发错误。
首先,我必须使用企业版而不是 XE,因为 XE 不支持 java SP 并且依赖于 Oracle Web Flow。即使我消除了这些依赖项,构建通常也需要 1.5 小时才能加载(完整构建)。
那么如何在这种环境中实现测试隔离呢?为每个测试使用事务并将它们回滚?好的,那些有提交的 pl/sql 过程呢?
我考虑过备份和恢复以在每次测试后重置数据库,或者在每次测试之间重新创建整个数据库(太激烈了)。两者都不切实际,因为安装它需要一个多小时。对每个测试都这样做是矫枉过正和疯狂的。
有没有办法在数据库模式的沙子上画一条线,然后及时回滚到那个时间点?有点像一个大的“撤消”功能。除了 expdp/impdp 或 rman 之外的东西。也许整个方法都关闭了。建议?其他人是如何做到这一点的?
对于 CI 或小型生产升级窗口,整个测试套件必须在合理的时间内运行(30 分钟是理想的)。
是否有产品可以帮助实现这种“撤消”能力?
php - 用php隔离部分url,然后在html元素中打印
我正在 WordPress 中构建一个画廊,我试图获取我的 URL 的特定部分以回显到 div 的 id 中。
这是我的网址:
我想隔离画廊的 id,它总是一个数字(在本例中为 1)。然后我想有一种方法可以在某处打印它,也许是以函数的形式。