Използвам Symfony 2.1, за да създам уебсайт с малка форма за влизане. Следвам урока на тази връзка но не виждам част, в която се говори за CSRF защита. Въпреки това, тук има всички опции за сигурност при влизане и на накрая виждам ясно, че този тип защита трябва да се поддържа. Не разбирам как да го използвам
CSRF защита във формата за вход
Отговори (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
формулярът за влизане няма клас формуляр, така че не мога да използвам тези методи
- person Stefano; 08.10.2012
Благодаря ви, но не мисля, че това е, което търся. Това не трябва ли да е за класически форми? Мислех, че има някакво поле за формуляр за формуляра за влизане, което да се получава автоматично чрез twig
- person Stefano; 08.10.2012
този метод отпечатва низ, който изглежда като csrf токен, но наличието му или не не прави разлика във формата за влизане. Изглежда, че symfony не го проверява. Но в опциите за конфигурация csrf трябва да бъде активиран по подразбиране в процеса на влизане
- person Stefano; 08.10.2012
Трябваше да настроя доставчика на 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