更改其他会话变量时,我是否需要在ColdFusion中删除cookie



我的应用程序中的会话变量有问题。简而言之,我的ColdFusion应用程序在使用IFRAME的DOT Net应用程序中。主要应用程序是使用DOT Net,因此用户登录到DOT Net应用程序。用户成功登录后,他们可以访问我的ColdFusion应用程序。通过链接。因此,我的ColdFusion应用程序没有登录。(老板不希望我们的用户登录两次!)

为了区分每个用户,点网应用程序将两个URL变量(url.userid和urlusergroup)传递给我的ColdFusion应用程序。然后,我根据这些URL变量创建了会话变量,例如session.userid和session.usergroup,以在我的ColdFusion应用程序中漫游时将每个用户及其角色区分。这就是我创建会议的方式: 在我的应用程序中。

 <cfset session.userid= url.userid>
 <cfset session.usergroup= url.usergroup>

如果我登录为用户A,则创建了这两个会话,然后在我登录时(通过DOT Net App)再次登录,然后再次登录为用户B,为用户B创建了另一组会话,但是属于属于的会话变量对于用户a仍然存在。这弄乱了一切。

要一次仅维护1组会话,我会在我的index.cfm中进行以下操作:

   <CFIF StructKeyExists(session,"userid") >
      <cfif session.usergroup NEQ URL.usergroup AND session.userid NEQ url.userid>
         <cfset sessionInvalidate() />
         <cfset session.userid = url.userid>
         <cfset session.usergroup = url.usergroup>
      </cfif>
   </CFIF

这项工作,我可以作为具有不同角色的不同用户登录和注销,并且可以完美访问,但是我注意到的一件事仍然是cookie。当我cfdump var ="#cookie#"时,我看到了相同的jsessionid = c2aee274a09334eb98ccb2d332d332d6cada.cfusion

我的问题是:我应该和cookie做点什么吗?我还应该像我对他们的会话一样,使其过期并重建每个新用户的cookie?如何删除cookie以及如何为用户重建一个cookie?

不是您要寻找的答案,但是在我看来,您可以遇到更大的问题 - 是否有任何URL参数数字或'纯文本'?如果是这样,任何用户都可以看到通过IFRAME传递的URL参数,因此可以轻松更改用户ID和/或用户组,这些UserGroup可能会使他们可以访问他们不应该的事物。

例如,如果iframe调用:http://mycfapp.com/?userid=123&amp;usergroup=2

然后,通过篡改我可以作为其他用户登录的参数:http://mycfapp.com/?userid = 1&; usergroup=2

您需要考虑确保这些保护。您可以获取.NET应用程序来调用CF服务器端以进行身份验证并获取一个令牌,然后您可以将其传递到IFRAME中。这样,您就可以提供时间敏感令牌,而无需用户看到以简单URL参数传递的ID。

当用户注销以使令牌无效时,您也可以将.NET应用程序调用CF。

扩展约翰所说的话,您需要从.NET应用程序中拨打两个电话。

首先将用于对.NET系统的调用进行身份验证。为此,您应该回馈一个令牌。您可以将此令牌保存到会话或数据库中的用户ID。

然后使用该令牌,您应该允许.NET应用程序用户能够访问您的ColdFusion应用程序。您可以根据用户旅程在该令牌上设置超时。

最新更新