Поиск скриптов | Нужна соц сеть.
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; } } 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> Toruz (24.10.2020 в 11:11)
HTTPS-протокол наоборот, предовращает уязвимость CSRF. Сделали для этого SSL-сертификаты, чтобы не поделывать страницу от главной. Читай внимательно. А не всякую х...ню читай. Комментарии от пользователей, тем более от рядовых, не читай. Им хоть кол на голове чиши, они всё равно будут считать что HTTPS-протокол тоже уязвим. Скажу одно, HTTPS-протокол защищает на 60-70% от этой уязвимости. Всё остальное, 30-40% защищает сайт. Главное, мозги и прямые руки от разработчика.
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-протокол наоборот, предовращает уязвимость CSRF. Сделали для этого SSL-сертификаты, чтобы не поделывать страницу от главной. Читай внимательно. А не всякую х...ню читай. Комментарии от пользователей, тем более от рядовых, не читай. Им хоть кол на голове чиши, они всё равно будут считать что HTTPS-протокол тоже уязвим. Скажу одно, HTTPS-протокол защищает на 60-70% от этой уязвимости. Всё остальное, 30-40% защищает сайт. Главное, мозги и прямые руки от разработчика.
Я знаю что протол https защищает поток данных от сервера к клиенту но он тоже не совершенный так как ключ шифруется в base64 и его можно, а Басё в наше время можно тоже расшифровать для этого есть утилиты.
161817535 (24.10.2020 в 15:53)
Я знаю что протол https защищает поток данных от сервера к клиенту но он тоже не совершенный так как ключ шифруется в base64 и его можно, а Басё в наше время можно тоже расшифровать для этого есть утилиты.
Я знаю что протол https защищает поток данных от сервера к клиенту но он тоже не совершенный так как ключ шифруется в base64 и его можно, а Басё в наше время можно тоже расшифровать для этого есть утилиты.
Ты сам знаешь что такое base64. И как он реализуется и выполеяется. Base64 ты не расшифруешь, даже опытные хакеры(взломщики) не днями расшифровают его, а месяцами. Читай внимательно.
Toruz (24.10.2020 в 11:30) Файл csrf.class.php это. Его нужно про иклюдить. Защищаем auth.php от уязвимости CSRF.
[hljs class="php"] А можно зделать что бы он генерировал токен такого вида, так на много удобней и красивей. хххх-хххх-хххх-хххх Ab5f-56Gf-hu3c-g7rw
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; } } 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> Toruz (24.10.2020 в 15:59)
Ты сам знаешь что такое base64. И как он реализуется и выполеяется. Base64 ты не расшифруешь, даже опытные хакеры(взломщики) не днями расшифровают его, а месяцами. Читай внимательно.
Ты сам знаешь что такое base64. И как он реализуется и выполеяется. Base64 ты не расшифруешь, даже опытные хакеры(взломщики) не днями расшифровают его, а месяцами. Читай внимательно.
Я не знаю точно, но про утилиты знаю которые могут его расшифровать, правда расшифровка была не верная. Почему он что имеет ключ?
161817535 (24.10.2020 в 16:01)
[hljs class="php"]А можно зделать что бы он генерировал токен такого вида, так на много удобней и красивей.хххх-хххх-хххх-ххххAb5f-56Gf-hu3c-g7rw
[hljs class="php"]А можно зделать что бы он генерировал токен такого вида, так на много удобней и красивей.хххх-хххх-хххх-ххххAb5f-56Gf-hu3c-g7rw
Хеши давно устарели 32-битные. Запросто можно своровать и в брут засунуть. А вот sha256 64-битные не засунешь в брут. Он очень безопасный. Белые хакеры именно и рекомендуют использовать хеши(sha256) в паролях. Как ты его отделишь, если он слеплен в одно целое.
Вот именно. Сервисы не очень обрабатывают base64. Это уже на уровне машиного кода.
Toruz (24.10.2020 в 16:08)
Хеши давно устарели 32-битные. Запросто можно своровать и в брут засунуть. А вот sha256 64-битные не засунешь в брут. Он очень безопасный. Белые хакеры именно и рекомендуют использовать хеши(sha256) в паролях. Как ты его отделишь, если он слеплен в одно целое.
Хеши давно устарели 32-битные. Запросто можно своровать и в брут засунуть. А вот sha256 64-битные не засунешь в брут. Он очень безопасный. Белые хакеры именно и рекомендуют использовать хеши(sha256) в паролях. Как ты его отделишь, если он слеплен в одно целое.
Жаль было бы удобней, поро басе64 тоже запомню.