- CSRF token
12
WT форуми -> PHP MySQL ASP.NET -> CSRF token
Създайте нова тема Напишете отговор 
Автор Съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 04/07/2017 2:06 pm     CSRF token Отговорете с цитат


Здравейте, опитвам се да направя логин формата да има token.
Ето какво правя.

В някакъв клас имам две функции.

public function setToken()
    {
        $this->_token = bin2hex(openssl_random_pseudo_bytes(6));

        //Записвам в базата данни при сесийното ид.

        return $this->_token;
    }

public function getToken()
    {
        //Взимам от базата данни

        return $value;
    }


След това в контролера викам setToken() и слагам резултата в hidden поле.
После взимам записа от базата и сравнявам с това от полето.

При всеки рефреш кода се сменя.

Въпроса ми е изобщо правилно ли правя нещата или всъщност нищо не правя Smile ? Това ще ме предпази ли от csrf? Също така как мога да тествам?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 7
Bonus: 14
Мнения: 60
Мнение 05/07/2017 2:37 pm      Отговорете с цитат


Мисля, че логиката ти е правилна, но защо трябва да го записваш в база данни ? Не може ли в сесия/бисквитка ?
Колкото до тестването - можеш чрез Ctrl+Shift+I ( за chrome ) да промениш hidden полето и да видиш дали работи.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 06/07/2017 7:02 am      Отговорете с цитат


Направих го със сесия, обаче тестването нещо не се получава.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 7
Bonus: 14
Мнения: 60
Мнение 06/07/2017 8:54 am      Отговорете с цитат


Как проверяваш данните ? Би трябвало да бъде нещо подобно:
PHP code:
if($_SERVER['REQUEST_METHOD'] == 'POST' && (isset($_POST['token'], $_SESSION['token']) && $_POST['token'] == $_SESSION['token']))
{
// тук всичко е наред и правиш каквото си искаш
}


За тест - просто пробвай да подадеш невярна информация за hidden полето от controller-а или както казах по-горе - да промениш стойността на hidden полето чрез Инспектора на браузъра.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 06/07/2017 11:40 am      Отговорете с цитат


Има ли смисъл да слагам токен на регистрационната форма?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 342
Bonus: 682
Мнения: 2564
Мнение 06/07/2017 1:20 pm      Отговорете с цитат


teroristd написа:
Има ли смисъл да слагам токен на регистрационната форма?


Хубаво е на всички, които извършват записване, изтриване, редактиране.

Сърч форм например няма нужда от csrf защита.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 06/07/2017 1:40 pm      Отговорете с цитат


Добре а има ли нужда стринга да се хешира? Същото и за кукито ме интересува.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
lam3r4370
Активен
Активен

Регистриран на: 20/08/2008 6:12 pm

Support: 131
Bonus: 244
Мнения: 3410
Мнение 06/07/2017 2:19 pm      Отговорете с цитат


Не и не. Може да генерираш и само един токен на сесия
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 80
Bonus: 172
Мнения: 1577
Мнение 06/07/2017 2:36 pm      Отговорете с цитат


Благодаря ви на всички.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 7
Bonus: 14
Мнения: 60
Мнение 06/07/2017 2:58 pm      Отговорете с цитат


За регистрационна форма не е ли по-добре да използва captcha вместо csrf token ?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 342
Bonus: 682
Мнения: 2564
Мнение 06/07/2017 3:01 pm      Отговорете с цитат


flafy написа:
За регистрационна форма не е ли по-добре да използва captcha вместо csrf token ?

Бот може да вземе csrf token.
CSRF не пречи на ботове да събмитват форми.
Catpcha спира ботове да събмитват форми.

Тези две неща решават различни проблеми.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 7
Bonus: 14
Мнения: 60
Мнение 06/07/2017 3:07 pm      Отговорете с цитат


Fakeheal написа:
flafy написа:
За регистрационна форма не е ли по-добре да използва captcha вместо csrf token ?

Бот може да вземе csrf token.
CSRF не пречи на ботове да събмитват форми.
Catpcha спира ботове да събмитват форми.

Тези две неща решават различни проблеми.


Значи е хубаво да се използват и двете при регистрационна форма, така ли ?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 1 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети