Advertisement
Guest User

zerkms

a guest
Dec 1st, 2010
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.39 KB | None | 0 0
  1. <?php
  2.  
  3. session_start();
  4.  
  5. $token = calculate_token();
  6.  
  7. $session_token = isset($_SESSION['token']) ? $_SESSION['token'] : null;
  8.  
  9. if (!$session_token) {
  10.     $_SESSION['token'] = $token;
  11. } elseif ($session_token != $token) {
  12.     session_regenerate_id();
  13.     $_SESSION = array();
  14.     $_SESSION['token'] = $token;
  15. }
  16.  
  17. function calculate_token()
  18. {
  19.     $ip = !empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1';
  20.     $ua = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'no ua';
  21.     $charset = !empty($_SERVER['HTTP_ACCEPT_CHARSET']) ? $_SERVER['HTTP_ACCEPT_CHARSET'] : 'no charset';
  22.     $ip = substr($ip, 0, strrpos($ip, '.') - 1);
  23.     return md5($ua . $ip . $charset);
  24. }
  25.  
  26. function get_csrf_token()
  27. {
  28.     if (!isset($_SESSION['csrf_token'])) {
  29.         $_SESSION['csrf_token'] = md5(uniqid('', true));
  30.     }
  31.    
  32.     return $_SESSION['csrf_token'];
  33. }
  34.  
  35. if (isset($_POST['token'])) {
  36.     if ($_POST['token'] != get_csrf_token()) {
  37.         echo 'FU';
  38.         exit;
  39.     }
  40.    
  41.     if (isset($_POST['url'])) {
  42.         header('Location: ' . $_POST['url']);
  43.         exit;
  44.     }
  45.    
  46.     echo 'There was no url';
  47. }
  48.  
  49. ?>
  50.  
  51. <form method="POST">
  52. <input type="input" name="foo" />
  53. <input type="hidden" name="url" value="http://google.com" />
  54. <input type="hidden" name="token" value="<?php echo get_csrf_token(); ?>" />
  55. <input type="submit" />
  56. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement