Я пытаюсь протестировать систему защиты CRSF, созданную Symfony2, большое им спасибо.
мой шаблон security.yml: (я изменил шаблон по умолчанию.)
security:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: _security_check
login_path: _demo_login
csrf_provider: form.csrf_provider
logout:
path: _demo_logout
target: _demo
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
В моей форме:
<input type="hidden" name="_csrf_token" value="{{ csrf_token("authenticate") }}">
Это генерирует что-то вроде этого:
<input type="hidden" name="_csrf_token" value="cKzXBHRDX_sHuT4qt9TAJIwgRvtRMtPnFDtitrSZDuw">
Я не знаю, как symfony обрабатывает проверки с помощью токена, но перед отправкой моего логина я вручную изменил значение токена с помощью firebug, чтобы оно выглядело следующим образом:
<input type="hidden" name="_csrf_token" value="MODIFIEDcKzXBHRDX_sHuT4qt9TAJIwgRvtRMtPnFDtitrSZDuw">
и когда я отправляю свой логин, я вхожу в систему. Это означает, что токен не имеет никакого влияния. где я ошибаюсь?
Охота на бекасов
- Версия Symfony 2.5.2.
- Система зарегистрировала меня, когда я вручную установил для переменной сеанса «logged» значение true. Это происходит после чтения из базы данных и сравнения паролей.
HTML-форма!
<form id="Loginform" onsubmit="OrganicLogin();return false;"> <input type="hidden" name="_csrf_token" value="{{ csrf_token("authenticate") }}"> <div id="Loginresponse" style="display:none;"></div> <div class="form-group" style="overflow:hidden;"> <label style="margin-top:10px;" for="inputUsername" class="col-lg-2 control-label">Username</label> <div class="col-lg-10"> <input type="text" class="form-control" id="inputUsername" placeholder="Username" style="width:215px;float:right;"> </div> </div> <div class="form-group" style="overflow:hidden;" > <label style="margin-top:10px;" for="inputPassword" class="col-lg-2 control-label">Password</label> <div class="col-lg-10"> <input type="password" class="form-control" id="inputPassword" placeholder="Password" style="width:215px;float:right;"> </div> </div> <div class="form-group" style="overflow:hidden;text-align:center;" > <button type="submit" class="btn btn-primary btn-block" id="submitButton">Access</button> </div></form>
Да ! я сделал
На самом деле то, о чем я спорил все время, я сделал процесс входа в систему нативным способом, форму, чтение данных с помощью JS, отправку POST-запроса на контроллер, контроллер проверяет ввод и устанавливает сеанс.
нет, все вручную
На самом деле это первый раз, когда я использую security.yml, я просто удалил некоторые части, которые я считаю бесполезными для этой темы.
no ..
_csrf_token
) и распечатать вывод. - person Lkopo   schedule 10.09.2014