cordova和CORS(iOS)

我最近得到了一个相对较旧的iOS版本的cordova app(iphones),它是在一年前build成的,为了debugging它。

该应用程序从服务器查询API。 这个服务器使用Laravel构build,并使用laravel-cors 。

为了一个特殊的原因,这个应用程序的开发者已经build立了CORS服务器端来接受请求,只要Origin头部缺失。

有人告诉我,这个应用在过去的一年里工作得很好。 在debugging的时候,我注意到iOS浏览器在头文件中添加了origin =>'file://',当cordova应用程序使用$ .ajax做请求时

现在我的问题

你知道更新的iOS版本有这样的变化吗? 我想我不能做任何事情为了绕过它的客户端?

添加“file://”作为可接受的来源,服务器端是否安全?

万分感谢!

服务器接受null-Origin的原因并不是“奇怪的” – CORS是如何定义的。 它旨在防止基于浏览器的XSS攻击 – 浏览器自动发送Origin头,以便服务器可以接受或拒绝基于它们允许javascript调用的域的请求。 它旨在作为JSONP攻击的一个安全的基于标准的inheritance者来允许跨源的服务器请求,但是以受控的方式。 默认情况下,浏览器只需要并允许同源XHR和其他类似请求( 完整列表 )。

对于非浏览器客户端,CORs是未定义的,因为非浏览器客户端可以设置他们想要的任何Origin (例如curl ),所以在这些情况下,完全忽略Origin头部是有意义的。

要回答你的问题的一部分,添加file://作为一个可接受的原始服务器端是不(非常)安全的。 原因是希望绕过CORS保护的攻击者可以诱使用户下载网页到他们的文件系统,然后在他们的浏览器中执行 – 因此,由于file://在允许列表中,所以绕过了任何预期的Origin限制。 也可能有其他利用已知和未知的漏洞利用服务器接受file://起源。

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