科尔多瓦& CORS(iOS)

时间:2016-09-27 09:02:53

标签: ios cordova laravel cors

我最近得到了一个相对较旧的用于iOS(iphone)的cordova应用程序,该应用程序是在一年前制造的,以便对其进行调试。

该应用从服务器查询API。此服务器使用Laravel构建,并使用laravel-cors

由于一个特殊的原因,这个应用程序的开发人员已经设置了CORS服务器端来接受请求,只有在缺少Origin头时才会这样做。

有人告诉我,该应用程序在过去一年中工作正常。 在调试时,我注意到iOS浏览器添加了origin => '文件://'当cordova应用程序使用$ .ajax进行请求时,它的标题

现在我的问题

您是否意识到较新的iOS版本会发生这样的变化? 我想我不能在客户端做任何事情以绕过它?

添加" file://"的安全性如何?作为接受的来源,服务器端?

非常感谢!

1 个答案:

答案 0 :(得分:1)

服务器接受null-Origin的原因并不“特殊” - 这就是CORS的定义方式。它旨在防止基于浏览器的XSS攻击 - 浏览器自动发送Origin标头,以便服务器可以根据允许javascript调用的域接受或拒绝请求。它旨在作为JSONP hack的基于标准的安全继承者,以允许跨域服务器请求,但是以受控方式。默认情况下,浏览器只需要并允许同源XHR和其他类似请求(full list)。

对于非浏览器客户端,未定义CORs,因为非浏览器客户端可以设置他们想要的任何Origin(例如curl),因此在这些情况下,只留下完全Origin标题。

要回答部分问题,将file://添加为接受的原始服务器端并非(非常)安全。原因是希望绕过CORS保护的攻击者可以欺骗用户将网页下载到他们的文件系统,然后在他们的浏览器中执行 - 从而绕过Origin所在的任何预期file://限制允许的列表。可能还有其他已知和未知的漏洞利用可以利用接受file://来源的服务器。

您必须根据自己的项目要求评估添加此项风险的风险。