Die häufigste kritische Schwachstelle auf Websites ist Cross-Site Scripting (XSS). Es ermöglicht einem Angreifer, ein bösartiges Skript in eine Seite einzuschleusen, das im Browser eines ahnungslosen Benutzers ausgeführt wird. Es kann die Seite verändern, sensible Informationen abrufen oder sogar die Identität des Benutzers stehlen.
Template-Systeme versagen bei der Abwehr von XSS. Latte ist das einzige System mit einer effektiven Abwehr, dank kontextsensitivem Escaping.
Wer eine gut gesicherte Website haben möchte, verwendet Latte.
Quiz: Können Sie sich vor der XSS-Schwachstelle schützen?
Datenquelle: Acunetix Web Vulnerability Report
Beispiel für automatisches Escaping der Variable $text
in
verschiedenen Kontexten (Sie können das obere Template bearbeiten):
{var $text = "O'Neill"} - im Text: <span>{$text}</span> - im Attribut: <span title={$text}></span> - im Attribut ohne Anführungszeichen: <span title={$text}></span> - in JavaScript: <script>var = {$text}</script>
- im Text: <span>O'Neill</span> - im Attribut: <span title='O'Neill'></span> - im Attribut ohne Anführungszeichen: <span title="O'Neill"></span> - in JavaScript: <script>var = "O'Neill"</script>
Wir übertreiben nicht. Sie kennen die Latte-Sprache bereits. Sie wissen bereits, wie man Ausdrücke darin schreibt. Sie werden nämlich genauso geschrieben wie in PHP. Sie müssen also nicht darüber nachdenken, wie etwas in Latte geschrieben wird. Sie müssen nicht in der Dokumentation suchen. Sie müssen keine weitere Sprache lernen. Sie schreiben einfach wie in PHP. Mehr über die Latte-Syntax
<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 basiert auf PHP, während Twig auf Python basiert. Ein Designer in
Latte muss nicht ständig zwischen zwei verschiedenen Konventionen wechseln. Zum
Beispiel zwischen for person in people
in Templates und
foreach $people as $person
in PHP. Er muss auch nicht darüber
nachdenken, wo {% %}
und wo {{ }}
verwendet werden
soll, da Latte nur einen Delimiter {...}
hat.
Probieren Sie das Tool zur Konvertierung von Twig-Templates nach Latte aus.
<ul>
{foreach $foo->items as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
<ul>
{% for item in foo.items %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
Benutzer lieben dieses Feature. Wir nennen es
n:Attribute. Jedes gepaarte Tag, wie z.B. {if} … {/if}
,
das ein HTML-Element umschließt, kann als dessen Attribut n:if
geschrieben werden. Dadurch erzielen Sie eine sehr sparsame Schreibweise.
Attribute können auch die Präfixe inner-
und tag-
haben, dann bezieht sich das Verhalten auf das Innere des Elements bzw. auf die
öffnenden und schließenden HTML-Tags. Mehr über n-Attribute
Mit n:Attributen:
<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>
Dasselbe ohne sie:
{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 hat native Unterstützung in NetBeans und ein ausgezeichnetes Plugin für PhpStorm, das Tags, Filter und PHP-Code vorschlägt.
Bleiben Sie immer auf dem Laufenden. Das Plugin für Tracy informiert auf jeder Seite darüber, welche Templates und welche Variablen gerendert werden.
Latte ist ein Template-System der nächsten Generation – es versteht HTML. Wo andere Systeme nur eine Ansammlung von Zeichen sehen, sieht Latte HTML-Elemente. Deshalb verfügt es über zwei erstaunliche Funktionen wie kontextsensitives Escaping und n:Attribute.
Wie Blade, Twig und andere Systeme das Template sehen
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Wie Latte das Template sieht
<!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>
Ausgefeilte Mechanismen zur Wiederverwendung und Vererbung von Templates steigern Ihre Produktivität, da jedes Template nur seinen einzigartigen Inhalt enthält und wiederholte Elemente und Strukturen wiederverwendet werden.
Latte hat einen gepanzerten Bunker direkt unter der Haube. Er wird Sandbox-Modus genannt und isoliert Templates aus nicht vertrauenswürdigen Quellen, die beispielsweise von Benutzern selbst bearbeitet werden. Er gibt ihnen eingeschränkten Zugriff auf Tags, Filter, Funktionen, Methoden usw. Wie funktioniert das?
Latte kompiliert Templates zur Laufzeit in optimalen PHP-Code. Es ist also genauso schnell, als würden Sie reines PHP schreiben. Der kompilierte Code ist übersichtlich und Sie können ihn leicht debuggen. Bei jeder Änderung des Templates wird es natürlich neu kompiliert.
Wir entwickeln Latte seit über 18 Jahren – und die Zahl wächst weiter! Die von uns bereitgestellten Bibliotheken sind daher sehr ausgereift, stabil und weit verbreitet. Ihnen vertrauen eine Reihe globaler Unternehmen und sie treiben viele bedeutende Websites an. Wer verwendet Latte und vertraut darauf?
Latte ist das einzige Template-System, das seine gesamte Dokumentation in tschechischer Sprache hat. Leser loben sie für ihre Verständlichkeit und Aktualität. Wir wünschen Ihnen eine angenehme Lektüre.
Latte ist Open Source und Sie können es völlig kostenlos nutzen.
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.