La vulnérabilité critique la plus courante des sites web est Cross-Site Scripting (XSS). Elle permet à un attaquant d'insérer un script malveillant dans une page tierce, 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 templates échouent à se défendre contre XSS. Latte est le seul système doté d'une défense efficace, grâce à l'échappement contextuel.
Quiconque souhaite un site web bien sécurisé utilise Latte.
Quiz : pouvez-vous vous défendre contre la vulnérabilité XSS ?
Source des données : Acunetix Web Vulnerability Report
Exemple d'échappement automatique de la variable $text
dans
plusieurs contextes différents (vous pouvez modifier le template
supérieur) :
{var $text = "O'Neill"} - en texte: <span>{$text}</span> - dans l'attribut: <span title={$text}></span> - dans l'attribut sans guillemets: <span title={$text}></span> - en JavaScript: <script>var = {$text}</script>
- en texte: <span>O'Neill</span> - dans l'attribut: <span title='O'Neill'></span> - dans l'attribut sans guillemets: <span title="O'Neill"></span> - en JavaScript: <script>var = "O'Neill"</script>
Nous n'exagérons pas. Vous connaissez déjà vraiment le langage Latte. Vous savez déjà écrire des expressions dedans. Elles s'écrivent exactement comme en PHP. Vous n'avez donc pas à réfléchir à la manière d'écrire les choses en Latte. Vous n'avez pas besoin de chercher dans la documentation. Vous n'avez pas besoin d'apprendre un autre langage. Vous écrivez simplement comme en PHP. En savoir plus sur la syntaxe Latte
<ul>
{foreach $users as $user}
<li>{$user->name}</li>
{/foreach}
</ul>
{if $post->status === Status::Published}
Read post
{elseif count($posts) > 0}
See other posts
{/if}
{$product?->getDiscount()}
{$foo[0] + strlen($bar[Bar::Const])}
{array_filter($nums, fn($n) => $n < 100)}
Latte est basé sur PHP, tandis que Twig est basé sur Python. Un designer en
Latte n'a pas besoin de basculer constamment entre deux conventions
différentes. Par exemple, entre for person in people
dans les
templates et foreach $people as $person
en PHP. Il n'a même pas
besoin de penser où utiliser {% %}
et où utiliser
{{ }}
, car Latte a un seul délimiteur {...}
.
Essayez l'outil de conversion des templates Twig vers 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>
Les utilisateurs adorent cette fonctionnalité. Nous l'appelons
n:attributs. Chaque balise paire, telle que
{if} ... {/if}
, encapsulant un élément HTML, peut être écrite
comme son attribut n:if
. Vous obtenez ainsi une notation très
économique. Les attributs peuvent également avoir les préfixes
inner-
et tag-
, le comportement s'applique alors à
l'intérieur de l'élément ou aux balises HTML ouvrante et fermante
respectivement. En savoir
plus sur les n:attributs
En utilisant 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}
Latte a un support natif dans NetBeans et un excellent plugin pour PhpStorm qui suggère les balises, les filtres et le code PHP.
Restez informé. Le plugin pour Tracy informe sur chaque page quels templates et quelles variables sont rendus.
Latte est un système de templates de nouvelle génération – il comprend le langage HTML. Là où d'autres systèmes ne voient qu'un tas de caractères, Latte voit des éléments HTML. C'est pourquoi il possède deux fonctionnalités étonnantes comme l'échappement contextuel et les n:attributs.
Comment Blade, Twig et d'autres systèmes voient le template
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Comment Latte voit le template
<!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>
Des mécanismes sophistiqués de réutilisation et d'héritage des templates augmentent votre productivité, car chaque template ne contient que son contenu unique, et les éléments et structures répétés sont réutilisés.
Latte a un bunker blindé directement sous le capot. Il s'appelle le mode sandbox et isole les templates provenant de sources non fiables, comme ceux édités par les utilisateurs eux-mêmes. Il leur donne un accès limité aux balises, filtres, fonctions, méthodes, etc. Comment ça marche ?
Latte compile les templates en code PHP optimal à la volée. Il est donc tout aussi rapide que si vous écriviez du PHP pur. Le code compilé est clair et vous pouvez facilement le déboguer. Bien sûr, il est recompilé à chaque modification du template.
Nous développons Latte depuis plus de 18 ans – et ce chiffre continue de croître ! 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 dépendent de nous. Qui utilise et fait confiance à Latte ?
Latte dispose d'une documentation complète et claire. Les lecteurs la louent pour sa clarté et son actualité. Nous vous souhaitons une agréable lecture.
Latte est open source et vous pouvez l'utiliser entièrement gratuitement.
In the latest update of Latte, we are introducing several significant enhancements that will simplify and make more efficient the work with data in your templates. The new |group filter and the expanded capabilities of the |sort filter bring new possibilities for data presentation.
The first version of Latte 2 was released in 2014 as part of the then revolutionary splitting of the framework into a collection of standalone libraries. Version 3 of Latte, representing a major evolutionary leap was released just over a year ago.