我在查找有关在Coldfusion CFC上为AJAX调用保护远程功能的信息时遇到了很多麻烦。假设您在用户通过AJAX调用登录到站点后检索用户的敏感信息。你打这样的话:
https://www.mySite.com/pathToCFC/MyCFC.cfc?method=getBankInfo&userID=2343
所以这显然是超级不安全的,因为任何人都可以从浏览器调用它并更改userID以获取不同用户的银行信息。
我已经阅读了有关在远程函数上使用roles属性并使用cflogin对用户进行身份验证的信息,但即使有了这个,你也不必像上面的调用一样传递userID吗?经过身份验证的用户是否仍然无法切换用户ID以发现新用户的银行信息?
答案 0 :(得分:7)
不要从客户端传递用户标识。 userid和其他敏感数据应存储在服务器端。事实上,从客户端传递的每一位数据都必须被认为是可疑的,并经过验证。
因此,如果您正在使用cflogin,并且您在单个服务器或粘性会话服务器上,则将userid和任何其他关键信息存储在会话范围内。
在每个请求中,您从会话中获取此数据,而不是从客户端提供的数据中获取。
的良好起点答案 1 :(得分:0)
等一下,如果你有用户X必须从服务器请求他的详细信息,你不需要他的ID,你在会话中,或者如果你使用cflogin功能,你将有getUserAuth()。
我有管理员可以查看其他用户的详细信息,您担心他会看到您需要的银行详细信息角色,cf的角色或您的自定义解决方案等。
在任何情况下,您都不需要发送显式调用“用户3456的gimme银行帐户详细信息”..