Question

force session to expire when a user leaves the site

Asked by: R_Hos

is there any way to force a user's session to expire when they leave the site so they cant use the back button to get into a secure area?

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2005-03-31 at 08:26:50ID21371580
Tags

session

,

expire

,

force

Topic

ColdFusion Application Server

Participating Experts
4
Points
125
Comments
7

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Session expiration
    We are allowing Anonymous access. Please ask administrator why. When session expires users don't even realize. When the page gets refreshed they see all the user specific elements hidden and they are clueless what has happened. Worse when they submit the page and if session h...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: black0psPosted on 2005-03-31 at 08:42:06ID: 13673118

When they leave, will they close the browser or just leave the site entirely?

If they are closing the browser, you can set browser cookie variables instead of sessions. Once the browser is closed, the session expires. The problem is that if they never close the browser, the session won't expire. You could probably include a LastAccessed variable in the cookie and write a script to expire it when the LastAccessed is beyond 20 minutes.

You could also (in your Application.cfm) put the attribute setclientcookies="No" in the cfapplication tag and manually insert #Client.URLToken# in all of your links. When they try and go back through a link without the client variables, the session doesn't exist.

Other than that, without getting really creative with your scripts, I don't think there is a way to expire the cookies if the browser stays open and they are still within the allotted time.

-- Ian

 

by: R_HosPosted on 2005-03-31 at 08:51:38ID: 13673218

i really need somthing that will kill the session if the user leaves the domain... any ideas on where i should start?

 

by: kkhipplePosted on 2005-03-31 at 08:53:27ID: 13673241

its really difficult to track when a user does leave..  ie close the browser.... as its not an event you can keep track of


i aggreee with  black0ps' comments

 

by: black0psPosted on 2005-03-31 at 09:43:17ID: 13673710

Maybe try:
<!--- on all pages where an exit might occurr --->
<script language="javascript">
function exitting(x) {
      var popUpWin=0;
      popUpWindow('domaincheck.cfm?Domain=' & x,0,0,0,0);
}

function popUpWindow(URLStr, left, top, width, height)
{
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}
</script>
<body onUnload="exitting('<cfoutput>#CGI.SERVER_NAME#</cfoutput>')">
</body>

<!--- domaincheck.cfm page --->
<script language="javascript">
// use javascript to verify that the domain passed as a URL attribute is the same as the location in the popup's parent window
// if they are the same, close window
// if they are NOT the same, redirect to the same page with a new URL attribute called expire
</script>
<cfif IsDefined("URL.Expire")>
<cfset StructDelete(session,"login")>
<script>
// close window
</script>
</cfif>

That might work. You'll need to write the javascripts though.

-- Ian

 

by: 8riaNPosted on 2005-03-31 at 10:09:48ID: 13673961

Best solution I've found to this problem is pretty complicated and requires messing with every internal link in the site (at least every link you want protected this way).  The reason it has to be so complicated is that, for privacy reasons, browsers deliberately give the site you are leaving no knowledge of where you are going, so you just can't know when you leave the site.  You could have exit scripts on every page which validate the next page, but they cannot test the target URL and javascript could be turned off, so it's not very reliable or useful.

The most robust solution I have found it to set up a sequence where you have a session(orClient) var, say sessionKey which you set to some random value when you initialize the session.  The more important this security is and the more hits there are on the application, the better the reasons to use a fresh UUID-( sessionKey=CreateUUID() ), although a simple counter would accomplish the same goal in cases where you are trying to catch mistakes, not malicious users. So far so good.

The tricky part is you have to pass it as a URL variable in every link. You can't rely on the session because the whole point is to know when they aren't getting to the next page by clicking the link (or submit button) you are expecting them to click.

So upon landing on each page in the site, say in the application.cfm, you check the URL var to make sure it matches the one in the Session store (URL.sessionKey EQ Session.sessionKey) and if it does you CREATE A NEW KEY.

This new key, say newSessionKey, is then stored in the Session.sessionKey variable and appended to all the links on the page
e.g. <a href="page2.cfm?foo=bar&sessionKey=<cfoutput>#newSessionKey#</cfoutput>">

When the user hits back, URL.sessionKey is the old one, it no longer matches Session.sessionKey so you can take whatever action you want from the application.cfm, or wherever, to expire the session (I usually have a session.loggedIn variable I'd set to false.)

This works except for browser caching, which would still allow the user to at least SEE what was on the previous page (a security problem in payment cycles, for example)  So if just prefer that browsers usually not cache the page (forcing reload, forcing your check to catch the expired session) add
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
but this doesn't always work.  If you REALLY don't want the browser caching, read this:
http://www.htmlgoodies.com/beyond/reference/article.php/3472881
and then recommend that they close the browser window when they're done.

This solution works great for small, sensitive parts of an application, like the payment cycle, but is a little cumbersome for large apps with lots of links.  The obvious disadvantage is that you have to get every link, form action and <cflocation> tag and append the URL variable.  The advantage is that by the time a link hits the browser, it is already obsolete so short of decoding the algorithm that produces the next sessionKey, it's pretty foolproof.

N.b.  Make sure any information links, etc. in this process are popups, preferably with close buttons, or include the mainline forms, etc. or you'll just be inviting the user to shoot themselves in the foot by clicking back.  I know I would.

Hope this is helpful,
8riaN

 

by: mrichmonPosted on 2005-03-31 at 10:31:26ID: 13674183

The short answer is not really and not worth it.

As you can see from teh posts so far there is NO guaranteed way to catch them.

You can try the javascript onUnload, but this runs on every page and may clear a session when you don't want to.

You can mess with the URLs and pass around a sessionID or some other thing, but the URL becomes messy and is prone to tampering...

 

by: R_HosPosted on 2005-03-31 at 11:47:48ID: 13674918

i appreciate all your feedback... i'm going to end up doing nothing but if i come up with something in the future i will post it here.  thanks again.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...