dev-master
9999999-dev http://secit.plAdvanced implementation of the Symfony form token.
MIT
The Requires
by Tomasz Gemza
form javascript bundle symfony token csrf
Advanced implementation of the Symfony form token.
This bundle provides the advanced form token implementation for Symfony 2.8 and 3.0+., (*1)
From the command line run, (*2)
$ composer require secit-pl/advanced-form-token-bundle
Update your AppKernel by adding the bundle declaration, (*3)
class AppKernel extends Kernel { public function registerBundles() { $bundles = [ ... new SecIT\AdvancedFormTokenBundle\AdvancedFormTokenBundle(), ]; ... } }
By default this bundle is disabled for all forms. You can enable it globally or for a single form., (*4)
To enable the JavaScript token just add the javascript_csrf_protection
to the form defaults., (*5)
<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type as FormField; use Symfony\Component\Validator\Constraints; class ContactType extends AbstractType { public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'javascript_csrf_protection' => true, // enable the JavaScript form token ... ]); } public function buildForm(FormBuilderInterface $builder, array $options) { ... } }
Here is the list of possible options used by JavaScript form token. Most of them works the same like the native Symfony form token options., (*6)
javascript_csrf_protection - default: false - is JavaScript form token enabled?, (*7)
javascript_csrf_field_name - deafult: _jstoken - the token form field name, (*8)
javascript_csrf_message - The error message displayed if the form token is invalid, (*9)
javascript_csrf_javascript_obfuscator' - deafult: null - The obfuscator class used to obfuscate generated token JavaScript code, (*10)
config.yml, (*11)
advanced_form_token: javascript_token: enabled: ~ # default false - is JavaScript form token enabled for all forms? field_name: ~ # deafult: _jstoken - the token form field name for all forms javascript_obfuscator: ~ # deafult: null - The obfuscator class used to obfuscate generated token JavaScript code for all forms
By default generated JavaScript code is not obfuscated. To enable it you need to define the obfuscator class which should
be used for this operation. This class should implements the SecIT\AdvancedFormTokenBundle\JavaScript\ObfuscatorInterface
., (*12)
Current version provides one ready to use obfuscator SecIT\AdvancedFormTokenBundle\JavaScript\TholuPhpPackerObfuscator
which
requires that you have already installed the https://github.com/tholu/php-packer. This package in not installed by default
due to the fact that it uses the LGPL-2.1 license thich is not fully compatible with MIT license used by this bundle., (*13)
To enable the obfuscator for a single form set the javascript_csrf_javascript_obfuscator
option to the SecIT\AdvancedFormTokenBundle\JavaScript\TholuPhpPackerObfuscator
value., (*14)
In most cases you'd like to have obfuscator enabled for all JavaScript token forms so the best way will be to set it up
globally in your config.yml
:, (*15)
advanced_form_token: javascript_token: javascript_obfuscator: SecIT\AdvancedFormTokenBundle\JavaScript\TholuPhpPackerObfuscator
From now TholuPhpPackerObfuscator will randomly obfuscate the JavaScript code generated for each form token., (*16)
Advanced implementation of the Symfony form token.
MIT
form javascript bundle symfony token csrf