A weboldalak leggyakoribb kritikus sebezhetősége a Cross-Site Scripting (XSS). Lehetővé teszi a támadó számára, hogy rosszindulatú szkriptet illesszen be egy idegen oldalra, amely a gyanútlan felhasználó böngészőjében fut le. Módosíthatja az oldalt, érzékeny információkat szerezhet, vagy akár ellophatja a felhasználó identitását.
A sablonrendszerek kudarcot vallanak az XSS elleni védekezésben. A Latte az egyetlen rendszer hatékony védelemmel, az úgynevezett kontextusfüggő escapelésnek köszönhetően.
Aki jól védett weboldalt szeretne, az Latte-t használ.
Kvíz: meg tudja védeni magát az XSS sebezhetőség ellen?
Adatforrás: Acunetix Web Vulnerability Report
Példa a $text
változó automatikus escapelésére több
különböző kontextusban (a felső sablont szerkesztheti):
{var $text = "O'Neill"} - szövegben: <span>{$text}</span> - attribútumban: <span title={$text}></span> - idézőjel nélküli attribútumban: <span title={$text}></span> - JavaScriptben: <script>var = {$text}</script>
- szövegben: <span>O'Neill</span> - attribútumban: <span title='O'Neill'></span> - idézőjel nélküli attribútumban: <span title="O'Neill"></span> - JavaScriptben: <script>var = "O'Neill"</script>
Nem túlzunk. Valóban ismered már a Latte nyelvet. Már tudod, hogyan írj benne kifejezéseket. Pontosan úgy íródnak, mint a PHP-ban. Így nem kell gondolkodnod azon, hogyan írj valamit Latte-ban. Nem kell a dokumentációban keresgélned. Nem kell újabb nyelvet tanulnod. Egyszerűen csak úgy írsz, mint PHP-ban. Többet a Latte szintaxisáról
<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-n, míg a Twig Pythonon alapul. Egy Latte tervezőnek nem kell
folyamatosan két különböző konvenció között váltogatnia. Például a
sablonokban for person in people
és a PHP-ban
foreach $people as $person
között. Arra sem kell gondolnia, hol
használjon {% %}
-t és hol {{ }}
-t, mert a Latte-nak
egyetlen {...}
elválasztója van.
Próbálja ki a Twig sablonok Latte-ba konvertáló eszközt.
<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. Úgy hívjuk:
n:attribútumok. Bármely páros tag, mint például a
{if} … {/if}
, amely egy HTML elemet burkol, leírható
n:if
attribútumként. Ez nagyon takarékos írásmódot
eredményez. Az attribútumoknak lehetnek inner-
és
tag-
előtagjai is, ekkor a viselkedés az elem belsejére, illetve
a nyitó és záró HTML tagre vonatkozik. Többet az n-attribútumokról
N:attribútumok használatával:
<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 NetBeansben és egy kiváló pluginnal a PhpStormhoz, amely tageket, szűrőket és PHP kódot javasol.
Legyen mindig képben. A Tracy plugin minden oldalon tájékoztatja, hogy mely sablonok és milyen változók kerülnek renderelésre.
A Latte egy új generációs sablonrendszer – érti a HTML nyelvet. Ahol más rendszerek csak karakterhalmazt látnak, ott a Latte HTML elemeket lát. Ezért van két csodálatos funkciója, mint a kontextusfüggő escapelés és az n:attribútumok.
Hogyan látja a sablont a Blade, a Twig és más rendszerek
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Hogyan látja a sablont a Latte
<!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ődési mechanizmusok növelik a termelékenységet, mivel minden sablon csak az egyedi tartalmát tartalmazza, és az ismétlődő elemeket és struktúrákat újra felhasználják.
A Latte-nak páncélozott bunker van közvetlenül a motorháztető alatt. Ezt sandbox módnak hívják, és elszigeteli a nem megbízható forrásokból származó sablonokat, például azokat, amelyeket maguk a felhasználók szerkesztenek. Korlátozott hozzáférést biztosít számukra a tagekhez, szűrőkhöz, függvényekhez, metódusokhoz stb. Hogyan működik?
A Latte futásidőben optimális PHP kódra fordítja a sablonokat. Így ugyanolyan gyors, mintha tiszta PHP-t írna. A lefordított kód áttekinthető és könnyen debuggolható. Természetesen minden sablonmódosításkor újrafordításra kerül.
Több mint 18 éve fejlesztjük a Latte-t – és a szám folyamatosan növekszik! Az általunk biztosított könyvtárak ezért nagyon kiforrottak, stabilak és széles körben használtak. Számos globális vállalat bízik bennük, és sok 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éért és teljességéért. Kellemes olvasást kívánunk.
A Latte nyílt forráskódú és teljesen ingyenesen használható.