Les premiers modèles vraiment sûrs et intuitifs pour PHP

Plus de 27% des sites web
présentent des vulnérabilités critiques

La vulnérabilité critique la plus courante des sites web est le Cross-Site Scripting (XSS). Elle permet à un attaquant d'insérer un script malveillant dans une page qui s'exécute dans le navigateur d'un utilisateur peu méfiant. Il peut modifier la page, obtenir des informations sensibles ou même voler l'identité de l'utilisateur.

Les systèmes de templating ne parviennent pas à se défendre contre XSS. Latte est le seul système qui offre une défense efficace, grâce à l'échappement contextuel.

Tous ceux qui veulent un site Web bien sécurisé utilisent Latte.

Quiz : Pouvez-vous vous défendre contre la vulnérabilité XSS ?

Source : Rapport sur les vulnérabilités Web d'Acunetix

Exemple d'échappement automatique de la variable $text dans plusieurs contextes différents (vous pouvez modifier le modèle du haut) :

{var $text = "O'Neill"}
- dans le texte : <span>{$text}</span>
- dans l'attribut : <span title={$text}></span>
- dans un attribut non cité : <span title={$text}></span>
- dans JavaScript : <script>var = {$text}</script>
- dans le texte : <span>O'Neill</span>
- dans l'attribut : <span title='O&apos;Neill'></span>
- dans l'attribut non cité : <span title="O&apos;Neill"></span>
- dans JavaScript : <script>var = "O'Neill"</script>

Une langue que vous connaissez bien

Nous ne plaisantons pas, vous connaissez déjà la langue Latte. Vous savez déjà comment écrire des expressions dans ce langage. En fait, elles sont écrites exactement comme en PHP. Vous n'avez donc pas à réfléchir à la façon d'écrire des choses en Latte. Vous n'avez pas besoin de consulter la documentation. Vous n'avez pas besoin d'apprendre un autre langage. Vous écrivez simplement comme en PHP. En savoir plus sur la syntaxe de Latte

Boucle

<ul>
    {foreach $users as $user}
        <li>{$user->name}</li>
    {/foreach}
</ul>

Condition

{if $post->status === Status::Published}
    Read post
{elseif count($posts) > 0}
    See other posts
{/if}

Expressions

{$product?->getDiscount()}

{$foo[0] + strlen($bar[Bar::Const])}

{array_filter($nums, fn($n) => $n < 100)}

Latte vs Brindille

Latte est basé sur PHP, alors que Twig est basé sur Python. Dans Latte, un concepteur n'a pas à basculer constamment entre deux conventions différentes. Par exemple, entre for person in people in templates et foreach $people as $person en PHP. Il n'a même pas à se demander où utiliser {% %} et où utiliser {{ }}, car Latte n'a qu'un seul délimiteur {...}.

Essayez l'outil Twig to Latte.

<ul>
    {foreach $foo->items as $item}
        <li>{$item->name}</li>
    {/foreach}
</ul>
<ul>
    {% for item in foo.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
</ul>

Un mode d'économie du clavier qui vous excite

Les utilisateurs adorent cette fonctionnalité. Nous l'appelons n:attributes. Toutes les balises appariées, telles que {if} ... {/if}.. {if} ... {/if} n:if. Cela donne une notation très efficace. Les attributs peuvent également avoir des préfixes inner- et tag-, le comportement s'applique alors à l'intérieur de l'élément, respectivement aux balises HTML d'ouverture et de fin. En savoir plus sur les n-attributs

Utiliser les n:attributs :

<ul n:if="count($menu) > 1" class="menu">
    <li n:foreach="$menu as $item">
        <a n:tag-if="$item->href" href={$item->href}>
            {$item->caption}
        </a>
    </li>
</ul>

Et la même chose sans eux :

{if count($menu) > 1}
    <ul class="menu">
        {foreach $menu as $item}
            <li>
                {if $item->href}<a href={$item->href}>{/if}
                    {$item->caption}
                {if $item->href}</a>{/if}
            </li>
        {/foreach}
    </ul>
{/if}

Les développeurs de Latte Pampers

Modification de

Latte a un support natif dans NetBeans et un excellent plugin pour PhpStorm qui propose des balises, des filtres et du code PHP.

Débogage

Restez en contact. Le plugin pour Tracy vous informe sur chaque page des modèles et des variables qui sont rendus.

Modèles de nouvelle génération

Latte est un système de modélisation de nouvelle génération – il comprend le HTML. Là où les autres systèmes ne voient qu'un tas de caractères, Latte voit les éléments HTML. C'est la raison pour laquelle il dispose de deux fonctions étonnantes comme l'échappement sensible au contexte et n:attributes.

Comment Blade, Twig et d'autres systèmes voient le modèle

░░░░░░░░░░░░░░░
░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
    ░░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░
            @foreach ($navigation as $item)
                ░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
            @endforeach
        ░░░░░

        ░░░░░░░░
            ░░░░░░░░░░░░{{ $appName }}░
        ░░░░░░░░░
    ░░░░░░░
░░░░░░░

Comment Latte voit le modèle

<!DOCTYPE html>
<html>
    <head>
        <title>It's all about context</title>
        <meta name="description" content={include description}>
    </head>
    <body>
        <ul class="navigation">
            {foreach  $navigation as $item}
                <li><a href={$item->link}>{$item->title}</a></li>
            {/foreach}
        </ul>

        <script>
            var appName = {$appName};
        </script>
    </body>
</html>

Agencements et héritages

Les mécanismes sophistiqués de réutilisation et d'héritage des modèles augmentent votre productivité car chaque modèle ne contient que son contenu unique, et les éléments et structures répétés sont réutilisés.

Bac à sable

Le Latte dispose d'un bunker blindé juste sous le capot. Il s'agit du mode sandbox, qui isole les modèles des sources non fiables, telles que celles éditées par les utilisateurs eux-mêmes. Il leur donne un accès limité aux balises, filtres, fonctions, méthodes, etc. Comment ça marche ?

C'est très rapide

Latte compile le modèle vers le code PHP optimal en même temps que vous travaillez. Il est donc aussi rapide que si vous créiez un code purement PHP. Le code PHP compilé est clair et facile à déboguer. Le modèle est automatiquement recompilé chaque fois que nous modifions le fichier source.

Plus de 15 ans

Nous développons Latte depuis plus de 15 ans – et ce n'est pas fini ! Les bibliothèques que nous fournissons sont donc très matures, stables et largement utilisées. De nombreuses entreprises mondiales leur font confiance et de nombreux sites Web importants comptent sur nous. Qui utilise Latte et lui fait confiance ?

Une documentation de qualité

Les lecteurs font l'éloge de la documentation pour sa clarté et son exhaustivité. Nous vous souhaitons une agréable lecture.

Source ouverte

Latte est open source et son utilisation est totalement gratuite.