移动应用程序避免或保护CORS?

时间:2015-07-20 18:45:29

标签: java ajax web-services security cors

我想知道是否有行业标准可以更好地保护移动设备上的ajax呼叫。

我的移动应用程序包含我的网站&#html,js,& css文件 - 但在移动设备上本地安装它们以提高性能。移动设备'然后本地index.html调用我的Web服务器获取数据(在本例中为Tomcat)。

我发现这个工作的唯一方法是在我的servlet中启用CORS:

response.setContentType("text/html");
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "86400");

但老实说,我出于各种原因不喜欢这种情况,但主要是 - 任何人现在都可以从任何域查询我的网络服务器并获得回复......

如何通过使用CORS的移动设备实现对我的网络服务器的相同ajax调用 - 但是以更安全的方式,以便我的应用程序被允许访问?

**或**在这种移动设备的情况下,CORS是否完全错误,并且有更标准/更理想的解决方案?

2 个答案:

答案 0 :(得分:1)

虽然,OAuth是企业/长期解决方案。 对于周末项目,

您是否可以考虑将方法限制为仅限GET或少数所需的方法,并且还只提供对特定资源的访问?

以下是我使用的一种解决方法。

我在tomcat上的角度js应用程序遇到了类似的问题,以便与一个宁静的后端应用程序进行交互。

我创建了一个java应用程序并托管在托管angular的tomcat上。这个java应用程序调用后端。 后来我用grunt和nodejs替换了tomcat / java应用程序。工作得很好。

nodejs,中继请求是4行代码: - )

答案 1 :(得分:1)

CORS是一种标准,用于指示浏览器在其他域中的某个网页尝试访问您的域时该怎么做。

关键术语是 browsers 。任何人都可以构建一个请求(伪造他们喜欢的任何标题,包括Origin)来命中您的服务器。同源策略和CORS所依赖的是合作浏览器限制外国脚本可以做什么。

所以新闻很好。由于您的代码在应用程序的私有Web视图中运行,因此您可能不会面临在您的视图中运行代码的外部站点的风险。 (与浏览器相反,许多域在同一浏览器中运行代码。)

因此,只要您的代码仅在应用程序上运行,CORS就不会使您的网站比其他方式更容易受到攻击。