Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 1 
13, 2014 
http://www.flickr.com/photos/torkildr/3462607995/ Cookies and sessions
HTTP is “stateless” 
• By default, web servers are “forgetful” 
• As far as they can tell, every request comes from a 
totally new and different browser 
• (Not exactly true. We'll discuss persistent connections in 
the context of performance.) 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 2 
13, 2014
Pros of stateless servers 
• Chief benefit: Potential for replication 
• Improved performance: A sysadmin can fire up N copies 
of a website (on N machines) and any machine can serve 
each request. 
• Improved reliability: If a machine crashes, then another 
can be started up in its place, and no data gets lost in the 
process. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 3 
13, 2014
Cons of stateless servers 
• Chief problem: Keeping track of which requests "go 
together" 
• Security challenge: If a user submits username & password 
in http request X, then tries to access resources in http 
request Y, how does the server know that request Y is from 
somebody who already logged in? 
• By the time that request Y comes in, the server will already 
have forgotten that request X ever occurred. 
• And on a replicated system, request Y might be served by a 
different machine than request X. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 4 
13, 2014
Cookies to the rescue! 
• Reminder: 
• Cookie = a piece of data that is automatically copied 
between the client and server 
• Cookies can be set by the client (as in the last unit) or 
by the server. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 5 
13, 2014
A simple way to use cookies for 
login… 
• When user sends a valid username & password in 
request X, the server replies with a cookie containing 
the username & password 
• When user subsequently makes request Y, the 
browser sends along the cookie. 
• Sounds appealing: user only needs to log in once 
• Serious security hole: anybody who gets his hands on the 
user's computer can see cookies 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 6 
13, 2014
Using just cookies for login 
Monday, October 
Authenticate 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 7 
13, 2014 
Browser Server 
Type username 
& password Send username 
& password 
Cookie = 
usernm&pwd 
Click a link 
or whatever Request page 
(send cookie) 
Send back 
page 
Warning 
This design contains a 
serious security hole.
A more secure way of cookies+login 
• When user sends a valid username & password in 
request X, the server replies with a cookie containing 
a secret that the client couldn't possibly have guessed. 
• When user subsequently makes request Y, the 
browser sends along the cookie. 
• Since the client couldn't have guessed this value without 
logging in, the server knows that the user did in fact 
previously log in. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 8 
13, 2014
Using cookies for login 
Monday, October 
Authenticate 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 9 
13, 2014 
Browser Server 
Filesystem or 
Database 
Type username 
& password Send username 
& password 
Store a random number 
Cookie = the valid only for next 10 minutes 
random # 
Click a link 
or whatever Request page 
(send cookie) Check if the number is right; 
if so, give another 10 minutes 
Send back 
page
Session = state stored across 
requests 
• This is what we call a "session" 
• Session is basically an add-on to the basic http 
functionality of a website 
• So that the website can remember information across 
requests. 
• You can store lots of stuff in session 
• Numbers, strings, stringified objects, … 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 10 
13, 2014
Pros of sessions 
• Stores information between requests 
• Much more secure than the simple cookie-based 
approach I showed you 
• A bad person would need to steal the random number 
(cookie) within 10 minutes of its creation 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 11 
13, 2014
Cons of sessions 
• Requires your web server to have write-access to 
some sort of storage medium 
• File system, database, …, if you want replication 
• Otherwise just use memory (lost on server crash) 
• Requires user to access site every few minutes 
• Though you can configure longer or shorter times 
• This is a tradeoff between usability & security. 
• EECS servers currently are set to 24 minutes. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 12 
13, 2014
Simple example of using session 
<?php 
session_start(); 
if (isset($_SESSION['numhits'])) 
$_SESSION['numhits'] = $_SESSION['numhits']+ 1; 
else 
$_SESSION['numhits'] = 1; 
echo "You hit my server ".$_SESSION['numhits']." times."; 
?> 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 13 
13, 2014
Authentication 
(Using hardcoded username&pwd 
for now) 
<?php session_start(); /* login.php */ 
if (array_key_exists("username", $_REQUEST) 
&& array_key_exists("password", $_REQUEST)) { 
/* here is where we would check the username and password */ 
$_SESSION['uid'] = 1; 
echo '<a href="inventory.php">View Inventory</a>'; 
} else { 
?> 
<form action="login.php" method="POST"> 
<div>Username: <input type="text" name="username"></div> 
<div>Password: <input type="password" name="password"></div> 
<div><input type="submit" value="OK"></div> 
</form> 
<?php 
} 
?> 
<?php session_start(); /* inventory.php */ 
if (isset($_SESSION['uid'])) 
echo "This is where we would show inventory."; 
else 
Monday, October 
echo "You need to <a href='login.php'>Log in</a>"; 
?> 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 14 
13, 2014
You can set cookies without session 
<?php 
$nhits = isset($_COOKIE['numhits']) ? 
$_COOKIE['numhits'] : 0; 
$nhits = $nhits + 1; 
setcookie('numhits', $nhits, time()+86400*365); 
/* expires in 365 days */ 
echo "You hit my server ".$nhits." times."; 
?> 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 15 
13, 2014
Summarizing cookies vs sessions 
• Cookies 
• Little bits of data that are stored on client but also copied 
automatically to the server 
• Useful for storing little bits of data on the client, but they are 
visible to everybody 
• So don't store sensitive data in cookies 
• Sessions 
• Data is stored on the server (e.g., filesystem), keyed by a 
random number 
• The random number is sent as a cookie to the browser 
• And the random number expires after a little while 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 16 
13, 2014
When to use cookies vs sessions 
• Use cookies when 
• You need to save a small amount of data between requests, 
and it doesn't need to be kept secret 
• Use sessions when 
• You need to save a larger amount of data between requests, 
or when the data needs to be secret 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 17 
13, 2014
Examples of information not to 
store in unencrypted cookies 
• Passwords 
• Credit card numbers 
• Social security numbers 
• Student ID numbers 
• Birthdates 
• List of diseases the user has contracted 
• Anything that must be kept secret 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 18 
13, 2014
Yet another caveat 
• After all of those warnings, you still can save secret 
data in cookies, IF IT IS ENCRYPTED 
• You will see how to do this later in the term 
• But we don't really use encrypted cookies much 
because it can cause usability problems. 
Monday, October 
sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 19 
13, 2014

More Related Content

PPTX
java Cookies
PDF
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
PPTX
Powerpoint. 2
PPS
Jdbc session01
PDF
Survival of the Continuist
PPTX
PHP presentation
PPTX
Exposicion GWT
PPT
Jsp applet
java Cookies
Mischief Managed - Protecting your Serverless Functions (Memphis Web Workers)
Powerpoint. 2
Jdbc session01
Survival of the Continuist
PHP presentation
Exposicion GWT
Jsp applet

Viewers also liked (15)

PPTX
Google Developers Overview Deck 2015
DOCX
JAVA 2013 IEEE DATAMINING PROJECT A fast clustering based feature subset sele...
PPT
PPTX
Bridgepoint Midwest M&A Quarterly Update Q2-12
PDF
Wankumatoyama#01
PPTX
PHP Presentation
PDF
Agile terminologies quick_reference
PPTX
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
KEY
x ad05-hk
PDF
CAN A FOREST BE CREATED WITH RECYCLING
DOCX
Tugas Aksi Sosial - Fisip Unmer Malang
PDF
Een goed ingerichte web-GIS-architectuur levert winst op! Oranjewoud, Esri Ne...
PPT
Clearing the-hurdles
PPT
Contact Centre Technology Project
Google Developers Overview Deck 2015
JAVA 2013 IEEE DATAMINING PROJECT A fast clustering based feature subset sele...
Bridgepoint Midwest M&A Quarterly Update Q2-12
Wankumatoyama#01
PHP Presentation
Agile terminologies quick_reference
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
x ad05-hk
CAN A FOREST BE CREATED WITH RECYCLING
Tugas Aksi Sosial - Fisip Unmer Malang
Een goed ingerichte web-GIS-architectuur levert winst op! Oranjewoud, Esri Ne...
Clearing the-hurdles
Contact Centre Technology Project
Ad

Similar to Cookies and session (20)

PPTX
Sessions&cookies
PPT
PHP-07-Cookies-Sessions indepth powerpoint
PPT
Firefox instructions for PC
PPT
Safari instructions
PDF
Brute Force Attack
PDF
XMPP Academy #3
PPTX
Building Real Time Web Applications with SignalR (NoVA Code Camp 2015)
PPTX
Enterprise java unit-2_chapter-2
PPT
Firefox instructions for Macintosh
PPT
PPT
Internet Explorer instructions
PPT
Cookies in servlet
PDF
474 Password Not Found
PPTX
Geek Sync I CSI for SQL: Learn to be a SQL Sleuth
PPSX
Sessions and cookies
PPT
Cookies and sessions
PDF
Session and Cookies.pdf
PPT
RSA Secur id for windows
PPTX
Smart_IT_Supportevveryay_Presentation.pptx
PPTX
Using cookies and sessions
Sessions&cookies
PHP-07-Cookies-Sessions indepth powerpoint
Firefox instructions for PC
Safari instructions
Brute Force Attack
XMPP Academy #3
Building Real Time Web Applications with SignalR (NoVA Code Camp 2015)
Enterprise java unit-2_chapter-2
Firefox instructions for Macintosh
Internet Explorer instructions
Cookies in servlet
474 Password Not Found
Geek Sync I CSI for SQL: Learn to be a SQL Sleuth
Sessions and cookies
Cookies and sessions
Session and Cookies.pdf
RSA Secur id for windows
Smart_IT_Supportevveryay_Presentation.pptx
Using cookies and sessions
Ad

More from Soham Sengupta (20)

PPTX
Spring method-level-secuirty
PPTX
Spring security mvc-1
PDF
JavaScript event handling assignment
PDF
Networking assignment 2
PDF
Networking assignment 1
PPT
Sohams cryptography basics
PPT
Network programming1
PPT
JSR-82 Bluetooth tutorial
PPSX
Xmpp and java
PPT
Core java day2
PPT
Core java day1
PPT
Core java day4
PPT
Core java day5
PPT
Exceptions
PPSX
Java.lang.object
PPTX
Soham web security
PPTX
Html tables and_javascript
PPT
Html javascript
PPT
Java script
Spring method-level-secuirty
Spring security mvc-1
JavaScript event handling assignment
Networking assignment 2
Networking assignment 1
Sohams cryptography basics
Network programming1
JSR-82 Bluetooth tutorial
Xmpp and java
Core java day2
Core java day1
Core java day4
Core java day5
Exceptions
Java.lang.object
Soham web security
Html tables and_javascript
Html javascript
Java script

Recently uploaded (20)

PDF
Five Habits of High-Impact Board Members
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PPTX
Modernising the Digital Integration Hub
PPTX
Chapter 5: Probability Theory and Statistics
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
Microsoft Excel 365/2024 Beginner's training
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PDF
Flame analysis and combustion estimation using large language and vision assi...
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
How IoT Sensor Integration in 2025 is Transforming Industries Worldwide
PDF
Architecture types and enterprise applications.pdf
PPTX
2018-HIPAA-Renewal-Training for executives
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Five Habits of High-Impact Board Members
The influence of sentiment analysis in enhancing early warning system model f...
Modernising the Digital Integration Hub
Chapter 5: Probability Theory and Statistics
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Microsoft Excel 365/2024 Beginner's training
Enhancing plagiarism detection using data pre-processing and machine learning...
Consumable AI The What, Why & How for Small Teams.pdf
Flame analysis and combustion estimation using large language and vision assi...
A review of recent deep learning applications in wood surface defect identifi...
A proposed approach for plagiarism detection in Myanmar Unicode text
1 - Historical Antecedents, Social Consideration.pdf
How IoT Sensor Integration in 2025 is Transforming Industries Worldwide
Architecture types and enterprise applications.pdf
2018-HIPAA-Renewal-Training for executives
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
Improvisation in detection of pomegranate leaf disease using transfer learni...
Module 1.ppt Iot fundamentals and Architecture
Taming the Chaos: How to Turn Unstructured Data into Decisions
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf

Cookies and session

  • 1. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 1 13, 2014 http://www.flickr.com/photos/torkildr/3462607995/ Cookies and sessions
  • 2. HTTP is “stateless” • By default, web servers are “forgetful” • As far as they can tell, every request comes from a totally new and different browser • (Not exactly true. We'll discuss persistent connections in the context of performance.) Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 2 13, 2014
  • 3. Pros of stateless servers • Chief benefit: Potential for replication • Improved performance: A sysadmin can fire up N copies of a website (on N machines) and any machine can serve each request. • Improved reliability: If a machine crashes, then another can be started up in its place, and no data gets lost in the process. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 3 13, 2014
  • 4. Cons of stateless servers • Chief problem: Keeping track of which requests "go together" • Security challenge: If a user submits username & password in http request X, then tries to access resources in http request Y, how does the server know that request Y is from somebody who already logged in? • By the time that request Y comes in, the server will already have forgotten that request X ever occurred. • And on a replicated system, request Y might be served by a different machine than request X. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 4 13, 2014
  • 5. Cookies to the rescue! • Reminder: • Cookie = a piece of data that is automatically copied between the client and server • Cookies can be set by the client (as in the last unit) or by the server. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 5 13, 2014
  • 6. A simple way to use cookies for login… • When user sends a valid username & password in request X, the server replies with a cookie containing the username & password • When user subsequently makes request Y, the browser sends along the cookie. • Sounds appealing: user only needs to log in once • Serious security hole: anybody who gets his hands on the user's computer can see cookies Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 6 13, 2014
  • 7. Using just cookies for login Monday, October Authenticate sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 7 13, 2014 Browser Server Type username & password Send username & password Cookie = usernm&pwd Click a link or whatever Request page (send cookie) Send back page Warning This design contains a serious security hole.
  • 8. A more secure way of cookies+login • When user sends a valid username & password in request X, the server replies with a cookie containing a secret that the client couldn't possibly have guessed. • When user subsequently makes request Y, the browser sends along the cookie. • Since the client couldn't have guessed this value without logging in, the server knows that the user did in fact previously log in. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 8 13, 2014
  • 9. Using cookies for login Monday, October Authenticate sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 9 13, 2014 Browser Server Filesystem or Database Type username & password Send username & password Store a random number Cookie = the valid only for next 10 minutes random # Click a link or whatever Request page (send cookie) Check if the number is right; if so, give another 10 minutes Send back page
  • 10. Session = state stored across requests • This is what we call a "session" • Session is basically an add-on to the basic http functionality of a website • So that the website can remember information across requests. • You can store lots of stuff in session • Numbers, strings, stringified objects, … Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 10 13, 2014
  • 11. Pros of sessions • Stores information between requests • Much more secure than the simple cookie-based approach I showed you • A bad person would need to steal the random number (cookie) within 10 minutes of its creation Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 11 13, 2014
  • 12. Cons of sessions • Requires your web server to have write-access to some sort of storage medium • File system, database, …, if you want replication • Otherwise just use memory (lost on server crash) • Requires user to access site every few minutes • Though you can configure longer or shorter times • This is a tradeoff between usability & security. • EECS servers currently are set to 24 minutes. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 12 13, 2014
  • 13. Simple example of using session <?php session_start(); if (isset($_SESSION['numhits'])) $_SESSION['numhits'] = $_SESSION['numhits']+ 1; else $_SESSION['numhits'] = 1; echo "You hit my server ".$_SESSION['numhits']." times."; ?> Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 13 13, 2014
  • 14. Authentication (Using hardcoded username&pwd for now) <?php session_start(); /* login.php */ if (array_key_exists("username", $_REQUEST) && array_key_exists("password", $_REQUEST)) { /* here is where we would check the username and password */ $_SESSION['uid'] = 1; echo '<a href="inventory.php">View Inventory</a>'; } else { ?> <form action="login.php" method="POST"> <div>Username: <input type="text" name="username"></div> <div>Password: <input type="password" name="password"></div> <div><input type="submit" value="OK"></div> </form> <?php } ?> <?php session_start(); /* inventory.php */ if (isset($_SESSION['uid'])) echo "This is where we would show inventory."; else Monday, October echo "You need to <a href='login.php'>Log in</a>"; ?> sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 14 13, 2014
  • 15. You can set cookies without session <?php $nhits = isset($_COOKIE['numhits']) ? $_COOKIE['numhits'] : 0; $nhits = $nhits + 1; setcookie('numhits', $nhits, time()+86400*365); /* expires in 365 days */ echo "You hit my server ".$nhits." times."; ?> Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 15 13, 2014
  • 16. Summarizing cookies vs sessions • Cookies • Little bits of data that are stored on client but also copied automatically to the server • Useful for storing little bits of data on the client, but they are visible to everybody • So don't store sensitive data in cookies • Sessions • Data is stored on the server (e.g., filesystem), keyed by a random number • The random number is sent as a cookie to the browser • And the random number expires after a little while Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 16 13, 2014
  • 17. When to use cookies vs sessions • Use cookies when • You need to save a small amount of data between requests, and it doesn't need to be kept secret • Use sessions when • You need to save a larger amount of data between requests, or when the data needs to be secret Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 17 13, 2014
  • 18. Examples of information not to store in unencrypted cookies • Passwords • Credit card numbers • Social security numbers • Student ID numbers • Birthdates • List of diseases the user has contracted • Anything that must be kept secret Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 18 13, 2014
  • 19. Yet another caveat • After all of those warnings, you still can save secret data in cookies, IF IT IS ENCRYPTED • You will see how to do this later in the term • But we don't really use encrypted cookies much because it can cause usability problems. Monday, October sohamsengupta@yahoo.com, soham.sengupta.java@gmail.com 19 13, 2014