提高第三方应用程序的可用性

时间:2017-04-23 12:41:54

标签: javascript html user-interface knockout.js zurb-joyride

我们使用的第三方应用程序导致了大量问题,因为用户在点击Register按钮之前没有点击Launch按钮,或者他们点击{{1首先,这个包含RegisterRegister按钮的详细信息页面会刷新并转到他们的投资组合。然后他们必须在他们的protfolio列表中重新找到该项目。

我相信第三方应用程序是.NET并且正在使用knockout.js并且不允许嵌入到Frames中。

为用户提供指导或理想地减少这个过程有哪些选择?

我希望提供一个内部网页,只需按一下按钮即可发送LaunchRequest个动作。我发布了一个早期的问题Knockout data-bind click,但无法获得一些工作。

在SO上似乎有很多类似的问题,但我不确定这些问题/答案是否适用于自动按钮点击自包含应用程序,因为我想从第三方应用程序外部执行此操作(我是否甚至有权访问他们的视图模型吗?)。此应用程序可防止将其嵌入框架中。

  • Auto-click button element on page load using jQuery
  • How to auto click button in knockout js

  • 目前我有一个内部网站链接,可以并排打开两个浏览器窗口。一个人去指示第三方和第二个窗口。这没关系,但我们发现人们不想阅读。我真的想点击一下按钮,或者至少能够从内部网页一次发送一个请求。或者,如果可能的话,或者将兜风类型的指南覆盖到他们的网站上。

这是第三方按钮代码

Launch

1 个答案:

答案 0 :(得分:7)

你基本上想破解第三方应用程序,但你控制环境,所以听起来不可能。 (我不会谈论我是否认为这是一个好主意,我会列出你可能有的几个选项。)

删除X-Frame-Options标题

您说第三方应用不允许嵌入到框架中。这是通过响应标头完成的,最有可能是X-Frame-Options(或者它可以是Content-Security-Policy: frame-ancestors,但它实际上并不重要)。你所要做的就是删除那个标题,瞧,应用程序可以加载到一个框架中。

要删除标题,您需要某种代理。如果应用程序是在普通的http上提供的,那很简单,任何类型的http代理都可以删除相应的响应头。如果它在https上提供,则必须执行一些操作才能使其正常工作(创建证书颁发机构,将根证书作为受信任的根添加到客户端,使用代理连接到应用程序以及删除标题,替换使用您自己的https证书,然后在您的客户端上受到信任。)

请注意,这会削弱第三方应用的安全性,并且会使其容易受到与clickjacking(以及pixel perfect timing等类似的攻击,以及所有与帧相关的攻击)。

通过代理注入自定义脚本(编辑:稍后添加

使用上述代理,您无需删除X-Frame-Options。将您自己的javascript注入第三方应用程序页面会更好,因为它可以完全访问应用程序DOM,因此可以在原始页面上执行任何操作。例如,它可以更改行为,以便单击相应的按钮。 :)如果我无法在客户端安装浏览器扩展程序(见下文),我会这样做。

使用自定义客户端

您可以创建一个实际充当浏览器的自定义客户端,而不是将浏览器用作客户端,而是忽略上述标头。这也可以毫不费力地完成您想要的点击。缺点是您的用户必须启动自定义客户端,而不是使用他们的浏览器来使用该应用程序。在像Xamarin和WKWebView这样的移动环境中,这可能更容易实现。

浏览器扩展程序

自定义浏览器理念的更简单且可能更可行的变体是浏览器扩展。它可以在应用程序URL上激活,并且可以非常轻松地在相应页面上执行您想要的点击(浏览器扩展可以请求完全访问页面而不管标题)。您只需在客户端上安装一次扩展。如果必须,我可能会这样做。