CSRF защита във формата за вход

Използвам Symfony 2.1, за да създам уебсайт с малка форма за влизане. Следвам урока на тази връзка но не виждам част, в която се говори за CSRF защита. Въпреки това, тук има всички опции за сигурност при влизане и на накрая виждам ясно, че този тип защита трябва да се поддържа. Не разбирам как да го използвам


person Stefano    schedule 07.10.2012    source източник


Отговори (2)


Тук можете да прочетете подробно за CSRF защитата във версия 2.1


В случай, че не използвате класове на формуляри за вашите формуляри, можете просто да използвате функцията csrf_token (не забравяйте да прехвърлите своя низ за намерение там, който е празен по подразбиране):

<input type="hidden" name="token" value="{{ csrf_token('') }}">

Дефиниран е тук и в случаите по подразбиране ще изпълни този метод.


Възможно е тези отговори да са полезни и за вас:

https://stackoverflow.com/a/12054712/970721
https://stackoverflow.com/a/11632713/970721

person Vitalii Zurian    schedule 07.10.2012
comment
формулярът за влизане няма клас формуляр, така че не мога да използвам тези методи - person Stefano; 08.10.2012
comment
Благодаря ви, но не мисля, че това е, което търся. Това не трябва ли да е за класически форми? Мислех, че има някакво поле за формуляр за формуляра за влизане, което да се получава автоматично чрез twig - person Stefano; 08.10.2012
comment
този метод отпечатва низ, който изглежда като csrf токен, но наличието му или не не прави разлика във формата за влизане. Изглежда, че symfony не го проверява. Но в опциите за конфигурация csrf трябва да бъде активиран по подразбиране в процеса на влизане - person Stefano; 08.10.2012
comment
Трябваше да настроя доставчика на csrf за формата за влизане и след това проработи. Единственото нещо, което мразя, е фактът, че трябва да напиша изрично намерението, използвайки функцията csrf_token, вместо това реших, че има бърз начин да получа if от опциите за влизане в сигурността - person Stefano; 09.10.2012

Нищо не ви пречи да създадете клас формуляр за влизане. Всичко, което трябва да направите, е да кажете на контролера за влизане имената на генерираните полета:

form_login:
    username_parameter: login[username]
    password_parameter: login[password]
    csrf_parameter:     login[_token]

и задайте CSRF намерението на формуляра на authenticate:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults([
        'intention' => 'authenticate',
    ]);
}
person Elnur Abdurrakhimov    schedule 08.10.2012