Changeset 57f0c81 in github for program/include/rcmail.php


Ignore:
Timestamp:
Jul 15, 2009 5:49:35 AM (4 years ago)
Author:
thomascube <thomas@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
Children:
3db3fd8
Parents:
19862b55
Message:

Use request tokens to protect POST requests from CSFR

File:
1 edited

Legend:

Unmodified
Added
Removed
  • program/include/rcmail.php

    rafc6e4b r57f0c81  
    853853   
    854854  /** 
     855   * Generate a unique token to be used in a form request 
     856   * 
     857   * @param string Request identifier 
     858   * @return string The request token 
     859   */ 
     860  public function get_request_token($key) 
     861  { 
     862    if (!$this->request_tokens[$key]) 
     863      $_SESSION['request_tokens'][$key] = $this->request_tokens[$key] = md5(uniqid($key . rand(), true)); 
     864     
     865    return $this->request_tokens[$key]; 
     866  } 
     867   
     868   
     869  /** 
     870   * Check if the current request contains a valid token 
     871   * 
     872   * @param string Request identifier 
     873   * @return boolean True if request token is valid false if not 
     874   */ 
     875  public function check_request($key, $mode = RCUBE_INPUT_POST) 
     876  { 
     877    $token = get_input_value('_token', $mode); 
     878    $valid = !(empty($token) || $_SESSION['request_tokens'][$key] != $token); 
     879     
     880    if ($valid) 
     881      unset($_SESSION['request_tokens'][$key]); 
     882     
     883    return $valid; 
     884  } 
     885   
     886   
     887  /** 
    855888   * Create unique authorization hash 
    856889   * 
Note: See TracChangeset for help on using the changeset viewer.