我正在构建一个旨在供iOS / Android应用使用的API。
该应用程序使用JSON Web Token对用户进行身份验证。
尝试与本机应用程序中的API通信时,我遇到了CORS问题。
所以我为所有起源添加了CORS标题(仅限于以/api/
开头的网址)。
它现在运作正常,但我想知道我所做的不是潜在的漏洞吗?
我应该允许所有来源吗?如果本机应用程序将要求API,我是否可以提前知道Origin主机?
我很困惑。 在此先感谢您的帮助。
答案 0 :(得分:2)
如果用户拥有令牌,则不应该需要CORS保护。该令牌与用户使用其用户名和密码每次以及每次时间将用户身份登录到服务器完全相同。 CORS正在防范的威胁模型是恶意域/站点,而不是您自己的站点,使用您的域的cookie(包括会话ID)向您的服务器发出AJAX请求。
如果恶意域名或实体拥有您的用户令牌,那么您的用户身份就是如此PWN,那么您尝试进行何种CORS保护并不重要。恶意域名具有您用户的用户名和密码。 完全已妥协,直到您使其令牌无效。
因此,当恶意实体完全破坏用户的帐户时,不要担心请求来自哪里(CORS)。只需保护令牌就好像它是女王的珠宝一样。通过SSL发送并安全存储。如果恶意实体获得Fort Knox的密钥,那么问题的来源比请求来源更大。
答案 1 :(得分:0)
不要害怕让Cors Origin:*因为如果您限制服务器访问,可能会使您的业务陷入严重的不稳定局面,因此请努力使用令牌。
但是我以自己的方式研究了网络,发现任何加密有时都可以作为第三方工具解密,哇!
最后,在20天之内进行我自己的加密,而且每天都会使解密变得更加困难。
最终答案:了解加密和解密,然后按照您想要的方式来实现您的功能,而每个人都不知道。
如果您想要最大的安全性,请不要浪费时间使用SSL或国际哈希算法。之后,您可以根据需要将加密与国际哈希算法混合使用。
从简单的字符编码开始,然后更新和更新更多内容,一旦完成,您就可以在自己制作的每个应用中使用。
希望能有所帮助。