Die häufigste kritische Sicherheitslücke in Websites ist Cross-Site Scripting (XSS). Es ermöglicht einem Angreifer, ein bösartiges Skript in eine Seite einzufügen, das im Browser eines ahnungslosen Benutzers ausgeführt wird. Es kann die Seite verändern, vertrauliche Informationen erhalten oder sogar die Identität des Benutzers stehlen.
Templating-Systeme bieten keinen Schutz vor XSS. Latte ist das einzige System, das dank kontextsensitivem Escaping einen wirksamen Schutz bietet.
Jeder, der eine gut gesicherte Website will, verwendet Latte.
Quiz: Können Sie eine XSS-Schwachstelle abwehren?
Quelle: Acunetix Web Vulnerability Report
Beispiel für das automatische Escaping der $text
in
verschiedenen Kontexten (Sie können die obere Vorlage bearbeiten):
{var $text = "O'Neill"} - im Text: <span>{$text}</span> - im Attribut: <span title={$text}></span> - in unquotiertem Attribut: <span title={$text}></span> - in JavaScript: <script>var = {$text}</script>
- im Text: <span>O'Neill</span> - im Attribut: <span title='O'Neill'></span> - in unquotiertem Attribut: <span title="O'Neill"></span> - in JavaScript: <script>var = "O'Neill"</script>
Wir machen keine Witze, du kennst die Lattensprache bereits. Sie wissen bereits, wie man Ausdrücke in ihr schreibt. Sie sind sogar genau so geschrieben wie in PHP. Sie müssen also nicht darüber nachdenken, wie Sie etwas in Latte schreiben. Sie müssen nicht in der Dokumentation nachsehen. 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 nicht einmal darüber
nachdenken, wo er {% %}
und wo er {{ }}
verwenden
soll, denn Latte hat nur ein {...}
.
Probieren Sie das Twig to Latte tool 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>
Die Benutzer lieben diese Funktion. Wir nennen sie
n:attributes. Alle gepaarten Tags, wie z.B. {if} ... {/if}
..
{if} ... {/if}
die ein HTML-Element umschließen, können als
dessen n:if
geschrieben werden. Dies sorgt für eine sehr
effiziente Notation. Attribute können auch inner-
und
tag-
Präfixe haben, dann gilt das Verhalten für das Innere des
Elements bzw. die öffnenden und schließenden HTML-Tags. Mehr über
n-Attribute
Verwendung von 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>
Und das Gleiche 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 bietet native Unterstützung in NetBeans und ein hervorragendes Plugin für PhpStorm, das Tags, Filter und PHP-Code vorschlägt.
Bleiben Sie auf dem Laufenden. Das Plugin für Tracy informiert Sie auf jeder Seite darüber, welche Vorlagen und welche Variablen gerendert werden.
Latte ist ein Templating-System der nächsten Generation – es versteht HTML. Wo andere Systeme nur einen Haufen von Zeichen sehen, sieht Latte HTML-Elemente. Das ist der Grund, warum es zwei erstaunliche Funktionen wie kontextsensitives Escaping und n:attributes hat.
Wie Blade, Twig und andere Systeme die Vorlage sehen
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Wie Latte die Vorlage 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 Vorlagen erhöhen Ihre Produktivität, da jede Vorlage nur ihren eigenen Inhalt enthält und wiederkehrende Elemente und Strukturen wiederverwendet werden.
Die Latte hat einen gepanzerten Bunker unter der Haube. Er nennt sich Sandbox-Modus und isoliert Vorlagen von nicht vertrauenswürdigen Quellen, wie z. B. solchen, die von Benutzern selbst bearbeitet werden. Er gibt ihnen begrenzten Zugriff auf Tags, Filter, Funktionen, Methoden usw. Wie funktioniert das?
Latte kompiliert die Vorlage in den optimalen PHP-Code, während Sie arbeiten. Es ist also so schnell, als ob Sie reinen PHP-Code erstellen würden. Der kompilierte PHP-Code ist übersichtlich und leicht zu debuggen. Die Vorlage wird automatisch neu kompiliert, wenn wir die Quelldatei ändern.
Wir entwickeln Latte schon seit über 18 Jahren – und es werden immer mehr! Die von uns bereitgestellten Bibliotheken sind daher sehr ausgereift, stabil und weit verbreitet. Zahlreiche globale Unternehmen vertrauen auf sie, und viele bedeutende Websites verlassen sich auf uns. Wer nutzt und vertraut Latte?
Die Leser loben die Dokumentation für ihre Klarheit und Vollständigkeit. Wir wünschen Ihnen eine angenehme Lektüre.
Latte ist quelloffen und völlig kostenlos zu verwenden.
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.
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.