相关疑难解决方法(0)

如何在swift中为iOS全局请求添加HTTP头

func webView(webView: WKWebView!, decidePolicyForNavigationAction navigationAction: WKNavigationAction!, decisionHandler: ((WKNavigationActionPolicy) -> Void)!) {
     var request = NSMutableURLRequest(URL: navigationAction.request.URL)
     request.setValue("value", forHTTPHeaderField: "key")
     decisionHandler(.Allow)
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想为请求添加一个标头.我试过,navigationAction.request.setValue("IOS", forKey: "DEVICE_APP")但它不起作用.

请以任何方式帮助我.

http request-headers ios swift wkwebview

16
推荐指数
4
解决办法
2万
查看次数

在Web应用程序和本机应用程序之间组织安全通道

这个问题是对“ 在本机应用程序和网站之间共享凭据 ”的补充,因为我们的目标是在相反的方向上共享秘密。

TL; TR:我们如何安全地从Web浏览器应用程序向Native Desktop应用程序共享用户的身份验证/授权状态,因此同一用户不必在Native应用程序中另外进行身份验证?

TS; WM:我们正在研究以下架构:Web应用程序(在用户选择的Web浏览器中运行一些HTML前端UI),本机桌面应用程序(实现自定义协议处理程序),Web API和OAuth2服务,如图所示。

最初,使用授权代码授予流程针对OAuth2服务在Web浏览器应用程序中对用户进行身份验证/授权。

然后,当用户单击我们的基于协议的自定义超链接时,Web浏览器内容可以与本机应用程序进行单向对话。基本上,已经完成了通过Web API在两者之间建立安全的双向后端通信通道的工作。

我们认为,在对通过自定义协议链接从Web浏览器应用程序收到的任何请求采取行动之前,本机应用程序应首先对用户进行身份验证(使用该特定的桌面会话该用户应该是同一个人)。我们认为本机应用程序还应该使用授权码流(带有PKCE)来获取Web API的访问令牌。然后,它应该能够使用相同的Web API安全地验证自定义协议数据的来源和完整性。

但是,对于用户来说,必须两次进行身份验证可能是一个障碍,第一次是在Web浏览器中,第二次是在Native应用程序中,两者同时运行。

因此,存在一个问题:是否有一种方法可以在不损害此体系结构的客户端安全性的情况下,将OAuth2访问令牌(或任何其他授权承载)从Web浏览器应用安全地传递到本机应用?也就是说,Native应用程序可以使用Web浏览器中的身份调用Web API,而不必先验证同一用户?

就个人而言,我看不到如何安全地避免其他身份验证流程。默认情况下,通过自定义应用程序协议进行的通信是不安全的,因为通常这只是调用本机应用程序的命令行参数。与TLS通道不同,它可以被拦截,模拟等。我们可以对自定义协议数据进行加密。尽管如此,无论对本机应用程序进行什么调用来解密(无论是对客户端OS API还是对Web API的一些不受保护的调用),都必须执行,恶意的actor /恶意软件也可能会复制它们。

我想念什么吗?是否有特定于平台的安全解决方案?本机桌面应用程序是Electron应用程序,旨在跨平台。我们的大多数用户都将使用任何受支持的浏览器(甚至包括IE11)在Windows上运行此程序,但是毫无疑问ActiveX或入侵正在运行的Web浏览器实例。

windows security native web-applications oauth-2.0

7
推荐指数
2
解决办法
674
查看次数

如何在UIWebView请求中添加自定义HTTP标头,我的UIWebView基于Cordova项目?

我的iOS UIWebView页面基于Cordova开源框架,我想在其webview URL请求中添加一些自定义http标头,我的解决方案是将它们添加到以下UIWebView委托方法中.

调试显示标题已成功添加,但实际上请求不会将它们删除.使用Wireshark捕获网络数据包,发现只有标准标头可用,没有我的自定义标头.

我的测试基于模拟器(iOS 7.1),任何有此主题经验的人都请一起分享和讨论,提前感谢.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // Add customize http headers in UIWebView request
    if([request isKindOfClass:[NSMutableURLRequest class]]) {        

        NSMutableURLRequest * mRequest = (NSMutableURLRequest *)request;
        [mRequest setValue:@"1.1" forHTTPHeaderField:@"appVersion"];
        [mRequest setValue:@"iPhone 4S" forHTTPHeaderField:@"deviceModel"];
    }

    return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
}
Run Code Online (Sandbox Code Playgroud)

uiwebview http-headers ios cordova

3
推荐指数
3
解决办法
3万
查看次数