A weboldalak leggyakoribb kritikus sebezhetősége a Cross-Site Scripting (XSS). Ez lehetővé teszi a támadó számára, hogy rosszindulatú szkriptet illesszen be egy oldalba, amely a gyanútlan felhasználó böngészőjében végrehajtódik. Módosíthatja az oldalt, érzékeny információkat szerezhet, vagy akár ellophatja a felhasználó személyazonosságát.
A templating rendszerek nem tudnak védekezni az XSS ellen. A Latte az egyetlen olyan rendszer, amely hatékony védelmet nyújt, köszönhetően a kontextusérzékeny menekülésnek.
Aki jól védett weboldalt szeretne, az Latte-t használ.
Forrás: A Latte biztonsága Acunetix Web Vulnerability Report
Példa a $text
változó automatikus escapingjére több
különböző kontextusban (a felső sablont szerkesztheti):
{var $text = "O'Neill"} - szövegben: <span>{$text}</span> - in attribútumban: <span title={$text}></span> - idézőjel nélküli attribútumban: <span title={$text}></span> - és JavaScript: <script>var = {$text}</script>
- szövegben: <span>O'Neill</span> - in attribútumban: <span title='O'Neill'></span> - idézőjel nélküli attribútumban: <span title="O'Neill"></span> - és JavaScript: <script>var = "O'Neill"</script>
Nem viccelünk, már ismered a latte nyelvet. Már tudod, hogyan kell kifejezéseket írni rajta. Sőt, pontosan ugyanúgy íródnak, mint a PHP-ben. Tehát nem kell azon gondolkodnod, hogyan írj dolgokat Latte nyelven. Nem kell a dokumentációban keresgélned. Nem kell megtanulnod egy másik nyelvet. Egyszerűen csak úgy írsz, mint a PHP-ben. " Többet a Latte szintaxisáról .[more-about]:/hu/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)}
A Latte PHP-alapú, míg a Twig Python alapú. Egy Latte-ban dolgozó
tervezőnek nem kell folyamatosan váltania két különböző konvenció
között. Például a for person in people
a sablonokban és a
foreach $people as $person
a PHP-ban. Még csak gondolkodnia sem
kell azon, hogy hol használjon {% %}
és hol {{ }}
,
mert a Latte-ban csak egy {...}
elválasztó van.
Próbálja ki a “Twig to Latte eszközt:/hu/cookbook/migration-from-twig”.
<ul>
{foreach $foo->items as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
<ul>
{% for item in foo.items %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
A felhasználók imádják ezt a funkciót. Mi
n:attribútumoknak hívjuk. Bármely párosított címke, például
{if} ... {/if}
{if} ... {/if}
amelyek egy HTML-elemet
körülvesznek, az n:if
attribútumként írhatók le. Ez nagyon
hatékony jelölést tesz lehetővé. Az attribútumok inner-
és
tag-
előtaggal is rendelkezhetnek, ekkor a viselkedés az elem
belsejére, illetve a nyitó és záró HTML-tagekre vonatkozik. " Többet az
n-attribútumokról .[more-about]:/hu/syntax#toc-n-atributy"
Az n:attribútumok használata:
<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>
És ugyanez nélkülük:
{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}
A Latte natív támogatással rendelkezik a NetBeansban és egy kiváló plugin for PhpStorm, amely címkéket, szűrőket és PHP kódot javasol.
Maradjon kapcsolatban. A plugin for Tracy minden oldalon tájékoztatja Önt, hogy mely sablonok és változók kerülnek megjelenítésre.
A Latte egy következő generációs sablonkészítő rendszer – érti a HTML-t. Ahol más rendszerek csak egy csomó karaktert látnak, a Latte a HTML elemeket látja. Ez az oka annak, hogy két olyan elképesztő funkcióval rendelkezik, mint a kontextusérzékeny eszkalálás és az n:attribútumok.
Hogyan látja a Blade, a Twig és más rendszerek a sablont?
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Hogyan látja a Latte a sablont
<!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>
A kifinomult sablon újrafelhasználási és öröklési mechanizmusok növelik a termelékenységet, mivel minden sablon csak az egyedi tartalmát tartalmazza, és az ismétlődő elemek és struktúrák újrafelhasználásra kerülnek.
A Latte páncélozott bunkerrel rendelkezik közvetlenül a motorháztető alatt. Ezt homokozó módnak hívják, és elszigeteli a sablonokat a nem megbízható forrásoktól, például a felhasználók által szerkesztett sablonoktól. Korlátozott hozzáférést biztosít számukra a címkékhez, szűrőkhöz, függvényekhez, metódusokhoz stb. Hogyan működik?
A Latte az Ön munkájával egyidejűleg fordítja le a sablont az optimális PHP-kódra. Tehát olyan gyors, mintha tisztán PHP-t készítene. A lefordított PHP-kód világos és könnyen hibakereshető. A sablon automatikusan újrafordításra kerül minden alkalommal, amikor megváltoztatjuk a forrásfájlt.
Már több mint 15 éve fejlesztjük a Latte-t – és egyre csak növekszik! Az általunk biztosított könyvtárak ezért rendkívül kiforrottak, stabilak és széles körben használtak. Számos globális vállalat megbízik bennük, és számos jelentős weboldal támaszkodik ránk. Ki használja és bízik a Latte-ban?
Az olvasók dicsérik a dokumentációt az érthetőség és a teljesség miatt. Kellemes olvasást kívánunk.
A Latte nyílt forráskódú és teljesen szabadon használható.