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

标签 java ajax web-services security cors

我想知道是否有行业标准来更好地保护移动设备上的 ajax 调用。

我的移动应用程序由我网站的 html、js 和 css 文件组成,但为了提高性能,将它们本地安装在移动设备上。移动设备的本地 index.html 然后调用我的网络服务器获取数据(在本例中为 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 是否完全不正确,是否有更标准/更理想的解决方案?

最佳答案

CORS 是一种标准,用于指示浏览器在来自其他域的页面尝试访问您的域时执行操作。

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

所以这是个好消息。由于您的代码在应用程序的私有(private) Web View 中运行,因此您大概不会面临外国站点在您的 View 中运行代码的风险。 (与浏览器相反,许多域在同一浏览器中运行代码。)

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

关于java - 移动应用程序避免或保护 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524050/

相关文章:

java - @WebService 注释不适用于 Weblogic 10.3

Java - 在运行时检测内存交换

java - 关于这段Java代码的问题,为什么这么写

JQuery 单击功能不会间歇性触发

java - 如何从 Spring boot 调用 SOAP 服务

java - @XmlElementRef - 用于请求和响应的 JAXBElement 包装器

java - LinkedList vs ArrayList - 询问实现思路的观点

java - 带有基于 Java 中属性数据的对象的订单列表

javascript - 数据未通过 AJAX 调用进入 Coldbox 处理程序

javascript - 无法从日期时间选择器中获取值以通过 AJAX 发送