我想知道是否有行业标准来更好地保护移动设备上的 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/