La vulnerabilità critica più comune nei siti web è il Cross-Site Scripting (XSS). Consente a un aggressore di inserire uno script dannoso in una pagina che viene eseguito nel browser di un utente ignaro. Può modificare la pagina, ottenere informazioni sensibili o addirittura rubare l'identità dell'utente.
I sistemi di template non riescono a difendersi dagli XSS. Latte è l'unico sistema con una difesa efficace, grazie all'escape sensibile al contesto.
Chiunque voglia un sito web ben protetto usa Latte.
Quiz: Sapete difendervi dalle vulnerabilità XSS?
Fonte: Rapporto sulle vulnerabilità del web di Acunetix
Esempio di escape automatico della variabile $text
in diversi
contesti (è possibile modificare il modello superiore):
{var $text = "O'Neill"} - nel testo: <span>{$testo}</span> - in attributo: <span title={$text}></span> - in attributo non quotato: <span title={$text}></span> - in JavaScript: <script>var = {$text}</script>
- nel testo: <span>O'Neill</span> - nell'attributo: <span title='O'Neill'></span> - in attributo non quotato: <span title="O'Neill"></span> - in JavaScript: <script>var = "O'Neill"</script>
Non stiamo scherzando, conoscete già la lingua del latte. Sapete già come scrivere le espressioni in esso. Infatti, sono scritte esattamente come in PHP. Quindi non dovete pensare a come scrivere le cose in Latte. Non dovete cercare nella documentazione. Non dovete imparare un altro linguaggio. Basta scrivere come in PHP. “Per saperne di più sulla sintassi di Latte .[more-about]:/it/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 è basato su PHP, mentre Twig è basato su Python. Un progettista in
Latte non deve passare continuamente da una convenzione all'altra. Ad esempio,
tra for person in people
nei template e
foreach $people as $person
in PHP. Non deve nemmeno pensare a dove
usare {% %}
e dove usare {{ }}
, perché Latte ha un
delimitatore {...}
.
Provare lo strumento 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>
Gli utenti amano questa funzione. La chiamiamo n:attributi.
Qualsiasi tag accoppiato, come {if} ... {/if}
{if} ... {/if}
avvolge un elemento HTML può essere scritto come il
suo attributo n:if
. Questo rende la notazione molto efficiente. Gli
attributi possono anche avere i prefissi inner-
e
tag-
, quindi il comportamento si applica all'interno dell'elemento,
rispettivamente ai tag HTML di apertura e di chiusura. “Per saperne di più
sugli n-attributi .[more-about]:/it/syntax#toc-n-atributy”
Utilizzo di n:attributi:
<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>
E lo stesso senza:
{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 ha un supporto nativo in NetBeans e un eccellente plugin per PhpStorm che suggerisce tag, filtri e codice PHP.
Rimanere in contatto. Il plugin per Tracy informa su ogni pagina quali modelli e quali variabili vengono resi.
Latte è un sistema di template di nuova generazione: capisce l'HTML. Laddove gli altri sistemi vedono solo un mucchio di caratteri, Latte vede gli elementi HTML. Questo è il motivo per cui ha due caratteristiche sorprendenti come l 'escape sensibile al contesto e gli n:attributi.
Come Blade, Twig e altri sistemi vedono il template
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Come Latte vede il 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>
I sofisticati meccanismi di riutilizzo ed ereditarietà dei modelli aumentano la produttività, perché ogni modello contiene solo il suo contenuto unico, mentre gli elementi e le strutture ripetute vengono riutilizzati.
Latte ha un bunker blindato sotto il cofano. Si chiama modalità Sandbox e isola i template da fonti non attendibili, come quelle modificate dagli utenti stessi. Dà loro un accesso limitato a tag, filtri, funzioni, metodi e così via. Come funziona?
Latte compila il template fino al codice PHP ottimale nello stesso momento in cui lavorate. Quindi è veloce come se si creasse solo PHP. Il codice PHP compilato è chiaro e facile da debuggare. Il template viene ricompilato automaticamente ogni volta che si modifica il file sorgente.
Sviluppiamo Latte da oltre 15 anni, e non è finita qui! Le librerie che forniamo sono quindi altamente mature, stabili e ampiamente utilizzate. Sono fidate da numerose aziende globali e molti siti web importanti si affidano a noi. "Chi usa e si fida di Latte?:https://builtwith.nette.org
I lettori lodano la documentazione per la sua chiarezza e completezza. Vi auguriamo una piacevole lettura.
Latte è open source e completamente gratuito.