移动应用避免或保护 CORS?

2022-09-04 23:10:12

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

我的移动应用程序由我网站的html,js和css文件组成 - 但为了性能,将它们本地安装在移动设备上。移动设备的本地索引.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");

但老实说,我不喜欢这样,原因有很多,但主要是 - 现在任何东西都可以从任何域查询我的Web服务器并获得响应......

如何使用 CORS 从移动设备实现对 Web 服务器的相同 ajax 调用 - 但以更安全的方式,以便允许访问我的应用?

** OR ** 在这种情况下,CORS 是否完全不正确,并且有更标准/更理想的解决方案?


答案 1

CORS 是一种标准,用于指示浏览器在来自另一个域的页面尝试访问您的域时该怎么做。

那里的关键术语是浏览器。任何人都可以构造一个请求(伪造他们喜欢的任何标头,包括)来访问您的服务器。同源策略和 CORS 所依赖的是一个协作浏览器,它限制了外部脚本可以执行的操作。Origin

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

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


答案 2

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

您能否考虑将方法限制为仅 GET 或所需的少量 GET,并仅提供对特定资源的访问?

这是我使用的一个解决方法。

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

我创建了一个java应用程序,并托管在托管angular的同一只tomcat上。此 java 应用程序调用后端。我后来用 grunt 和 nodejs 替换了 tomcat/java 应用程序。效果很好。

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


推荐