2017 © Pedro Peláez
 

symfony-bundle security-bundle

Security related extensions for Symfony

image

silksh/security-bundle

Security related extensions for Symfony

  • Thursday, June 21, 2018
  • by michal.czarnecki
  • Repository
  • 5 Watchers
  • 0 Stars
  • 61 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

This bundle requires Symfony 3 or Symfony 4., (*1)

Bundle installation

Add the bundle to you project dependencies:, (*2)

composer require silksh/security-bundle

Symfony 3. Enable the bundle:, (*3)

// app/AppKernel.php
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        return array(
            // ...
            new SilkSH\SecurityBundle\SilkshSecurityBundle(),
        );
    }
}

Symfony 4. It's automatic, but if Symfony did not do it for you, enable the bundle manually in bundles.php:, (*4)

// config/bundles.php
return [
    // ...
    SilkSH\SecurityBundle\SilkshSecurityBundle::class => ['all' => true],
]

Validators

The bundle provides some Validators in the namespace SilkSH\SecurityBundle\Validator\Constraints., (*5)

  • FileName validates filenames. Possible properties:, (*6)

    • maxFilenameLength, default: 100.
    • maxFilenameLengthMessage: custom length error message. You can use {{ max_length }} inside.
    • allowedExtensions, default: "pdf", "txt", "doc", "docx", "ppt", "pptx", "jpg", "jpeg", "png"
    • allowedExtensionsMessage, custom error message about wrong extension. You can use {{ extension }} and {{ extensions }} inside.

    Example:, (*7)

    use SilkSH\SecurityBundle\Validator\Constraints as SecurityAssert;
    
    ...
    
    /**
     * @Vich\UploadableField(mapping="uploads", fileNameProperty="filename")
     * @SecurityAssert\FileName(
     *     maxFilenameLength=8,
     *     maxFilenameLengthMessage="Maximal file length is {{ max_length }} characters",
     *     allowedExtensions={"zip","bz2"},
     *     allowedExtensionsMessage="Extension '{{ extension }}' is not allowed. Allowed extensions: {{ extensions }}"
     * )
     */
    private $file;
    
    
  • Name allows only international alphanumeric and some special characters (A-z 0-9 - + _ . , @ " '). Possible properties:, (*8)

    • message: custom error message. You can use {{ allowed_signs }} inside.
  • HTMLPurifier allows only whitelisted HTML tags and attributes. It uses HTML Purifier library. Possible properties:, (*9)

    • message: custom error message.
  • TagWhitelist: simple and buggy HTML tag validator that uses DOMDocument. Using HTMLPurifier instead is recommended. Possible properties:, (*10)

    • allowedTags, default: "html", "head", "meta", "title", "style", "body", "table", "tr", "th", "td", "h1", "h2", "h3", "h4", "h5", "h6", "p", "a", "img", "br", "span", "small".
    • allowedTagsMessage, custom error message for non valid tags. You can use {{ allowed_tags }} inside.
    • allowedAttributes, default: "width", "align", "cellspacing", "cellpadding", "class", "style", "href", "http-equiv", "name", "alt", "border", "content", "bgcolor", "type", "target", "src".
    • allowedAttributesMessage, custom error message for non valid attributes. You can use {{ allowed_attributes }} inside.

Twig extension

The bundle provides purify filter for Twig. It uses HTML Purifier to remove all unsafe tags (like <script>) and attributes (like onclick) from HTML code., (*11)

Let's say we have some HTML code in the variable value and we want to render it unescaped, so that the user sees formatted output. Usage:, (*12)

{{ value|purify|raw }}

The Versions