Loading...
Поиск скриптов | Нужна соц сеть.
161817535 , вбей токен в сессию и выгружай где надо. Также можно сделать обновляемый токен, быть точнее уникальный на каждый запрос. Но вполне достаточно одного на сессию
php
   class CSRF { public function get_token_id()     { if(isset($_SESSION['token_id'])) {  return $_SESSION['token_id']; } else { $token_id = $this->random(10); $_SESSION['token_id'] = $token_id; return $token_id; } }  public function get_token() { if(isset($_SESSION['token_value'])) { return $_SESSION['token_value'];  } else { $token = hash('sha256', $this->random(500)); $_SESSION['token_value'] = $token; return $token; }  }  public function check_valid($method) { if($method == 'post' || $method == 'get') { $post = $_POST; $get = $_GET; if(isset(${$method}[$this->get_token_id()]) && (${$method}[$this->get_token_id()] == $this->get_token())) { return true; } else { return false; } } else { return false; } }  public function form_names($names, $regenerate) {  $values = array(); foreach ($names as $n) { if($regenerate == true) { unset($_SESSION[$n]); } $s = isset($_SESSION[$n]) ? $_SESSION[$n] : $this->random(10); $_SESSION[$n] = $s; $values[$n] = $s; } return $values; }  private function random($len) {         if (function_exists('openssl_random_pseudo_bytes')) {                 $byteLen = intval(($len / 2) + 1);                 $return = substr(bin2hex(openssl_random_pseudo_bytes($byteLen)), 0, $len);         } elseif (@is_readable('/dev/urandom')) { $f=fopen('/dev/urandom', 'r'); $urandom=fread($f, $len); fclose($f);                 $return = '';         }          if (empty($return)) { for ($i=0;$i<$len;++$i) { if (!isset($urandom)) { if ($i%2==0) {                                              mt_srand(time()%2147 * 1000000 + (double)microtime() * 1000000);                                 } $rand=48+mt_rand()%64; } else {                                 $rand=48+ord($urandom[$i])%64;                         }  if ($rand>57) $rand+=7; if ($rand>90) $rand+=6;  if ($rand==123) $rand=52; if ($rand==124) $rand=53; $return.=chr($rand); } }  return $return; } }   
Файл csrf.class.php это. Его нужно про иклюдить.
php
   <?php session_start(); include 'csrf.class.php';  $csrf = new csrf();   // Генерация id и значения токена $token_id = $csrf->get_token_id(); $token_value = $csrf->get_token($token_id);  // Генерация случайных названий для полей формы $form_names = $csrf->form_names(array('user', 'password'), false);   if(isset($_POST[$form_names['user']], $_POST[$form_names['password']])) { // Проверяем являются ли валидными id и значение токена. if($csrf->check_valid('post')) { // Получаем переменные формы. $user = $_POST[$form_names['user']]; $password = $_POST[$form_names['password']];  // Метод формы идет тут } // Генерируем новое случайное значение для формы. $form_names = $csrf->form_names(array('user', 'password'), true); }  ?>  <form action="index.php" method="post"> <input type="hidden" name="<?= $token_id; ?>" value="<?= $token_value; ?>" /> <input type="text" name="<?= $form_names['user']; ?>" /><br/> <input type="text" name="<?= $form_names['password']; ?>" /> <input type="submit" value="Login"/> </form>   
Защищаем auth.php от уязвимости CSRF.
Toruz (24.10.2020 в 11:11)
HTTPS-протокол наоборот, предовращает уязвимость CSRF. Сделали для этого SSL-сертификаты, чтобы не поделывать страницу от главной. Читай внимательно. А не всякую х...ню читай. Комментарии от пользователей, тем более от рядовых, не читай. Им хоть кол на голове чиши, они всё равно будут считать что HTTPS-протокол тоже уязвим. Скажу одно, HTTPS-протокол защищает на 60-70% от этой уязвимости. Всё остальное, 30-40% защищает сайт. Главное, мозги и прямые руки от разработчика.
Toruz (24.10.2020 в 11:11)
HTTPS-протокол наоборот, предовращает уязвимость CSRF. Сделали для этого SSL-сертификаты, чтобы не поделывать страницу от главной. Читай внимательно. А не всякую х...ню читай. Комментарии от пользователей, тем более от рядовых, не читай. Им хоть кол на голове чиши, они всё равно будут считать что HTTPS-протокол тоже уязвим. Скажу одно, HTTPS-протокол защищает на 60-70% от этой уязвимости. Всё остальное, 30-40% защищает сайт. Главное, мозги и прямые руки от разработчика.

Я знаю что протол https защищает поток данных от сервера к клиенту но он тоже не совершенный так как ключ шифруется в base64 и его можно, а Басё в наше время можно тоже расшифровать для этого есть утилиты.
161817535 (24.10.2020 в 15:53)
Я знаю что протол https защищает поток данных от сервера к клиенту но он тоже не совершенный так как ключ шифруется в base64 и его можно, а Басё в наше время можно тоже расшифровать для этого есть утилиты.


Ты сам знаешь что такое base64. И как он реализуется и выполеяется. Base64 ты не расшифруешь, даже опытные хакеры(взломщики) не днями расшифровают его, а месяцами. Читай внимательно.
Toruz (24.10.2020 в 11:30)
php
   class CSRF { public function get_token_id()     { if(isset($_SESSION['token_id'])) {  return $_SESSION['token_id']; } else { $token_id = $this->random(10); $_SESSION['token_id'] = $token_id; return $token_id; } }  public function get_token() { if(isset($_SESSION['token_value'])) { return $_SESSION['token_value'];  } else { $token = hash('sha256', $this->random(500)); $_SESSION['token_value'] = $token; return $token; }  }  public function check_valid($method) { if($method == 'post' || $method == 'get') { $post = $_POST; $get = $_GET; if(isset(${$method}[$this->get_token_id()]) && (${$method}[$this->get_token_id()] == $this->get_token())) { return true; } else { return false; } } else { return false; } }  public function form_names($names, $regenerate) {  $values = array(); foreach ($names as $n) { if($regenerate == true) { unset($_SESSION[$n]); } $s = isset($_SESSION[$n]) ? $_SESSION[$n] : $this->random(10); $_SESSION[$n] = $s; $values[$n] = $s; } return $values; }  private function random($len) {         if (function_exists('openssl_random_pseudo_bytes')) {                 $byteLen = intval(($len / 2) + 1);                 $return = substr(bin2hex(openssl_random_pseudo_bytes($byteLen)), 0, $len);         } elseif (@is_readable('/dev/urandom')) { $f=fopen('/dev/urandom', 'r'); $urandom=fread($f, $len); fclose($f);                 $return = '';         }          if (empty($return)) { for ($i=0;$i<$len;++$i) { if (!isset($urandom)) { if ($i%2==0) {                                              mt_srand(time()%2147 * 1000000 + (double)microtime() * 1000000);                                 } $rand=48+mt_rand()%64; } else {                                 $rand=48+ord($urandom[$i])%64;                         }  if ($rand>57) $rand+=7; if ($rand>90) $rand+=6;  if ($rand==123) $rand=52; if ($rand==124) $rand=53; $return.=chr($rand); } }  return $return; } }   
Файл csrf.class.php это. Его нужно про иклюдить.
php
   <?php session_start(); include 'csrf.class.php';  $csrf = new csrf();   // Генерация id и значения токена $token_id = $csrf->get_token_id(); $token_value = $csrf->get_token($token_id);  // Генерация случайных названий для полей формы $form_names = $csrf->form_names(array('user', 'password'), false);   if(isset($_POST[$form_names['user']], $_POST[$form_names['password']])) { // Проверяем являются ли валидными id и значение токена. if($csrf->check_valid('post')) { // Получаем переменные формы. $user = $_POST[$form_names['user']]; $password = $_POST[$form_names['password']];  // Метод формы идет тут } // Генерируем новое случайное значение для формы. $form_names = $csrf->form_names(array('user', 'password'), true); }  ?>  <form action="index.php" method="post"> <input type="hidden" name="<?= $token_id; ?>" value="<?= $token_value; ?>" /> <input type="text" name="<?= $form_names['user']; ?>" /><br/> <input type="text" name="<?= $form_names['password']; ?>" /> <input type="submit" value="Login"/> </form>   
Защищаем auth.php от уязвимости CSRF.
[hljs class="php"] А можно зделать что бы он генерировал токен такого вида, так на много удобней и красивей. хххх-хххх-хххх-хххх Ab5f-56Gf-hu3c-g7rw
Toruz (24.10.2020 в 15:59)
Ты сам знаешь что такое base64. И как он реализуется и выполеяется. Base64 ты не расшифруешь, даже опытные хакеры(взломщики) не днями расшифровают его, а месяцами. Читай внимательно.

Я не знаю точно, но про утилиты знаю которые могут его расшифровать, правда расшифровка была не верная. Почему он что имеет ключ?
161817535 (24.10.2020 в 16:01)
[hljs class="php"]А можно зделать что бы он генерировал токен такого вида, так на много удобней и красивей.хххх-хххх-хххх-ххххAb5f-56Gf-hu3c-g7rw


Хеши давно устарели 32-битные. Запросто можно своровать и в брут засунуть. А вот sha256 64-битные не засунешь в брут. Он очень безопасный. Белые хакеры именно и рекомендуют использовать хеши(sha256) в паролях. Как ты его отделишь, если он слеплен в одно целое.
Вот именно. Сервисы не очень обрабатывают base64. Это уже на уровне машиного кода.
Toruz (24.10.2020 в 16:08)
Хеши давно устарели 32-битные. Запросто можно своровать и в брут засунуть. А вот sha256 64-битные не засунешь в брут. Он очень безопасный. Белые хакеры именно и рекомендуют использовать хеши(sha256) в паролях. Как ты его отделишь, если он слеплен в одно целое.

Жаль было бы удобней, поро басе64 тоже запомню.
Онлайн: 5
Время:
Gen. 0.1577
(c) Bym.Guru 2010-2026