Najpogostejša kritična ranljivost spletnih mest je Cross-Site Scripting (XSS). Napadalcu omogoča vstavitev zlonamernega skripta na tujo stran, ki se nato izvede v brskalniku nič hudega slutečega uporabnika. Lahko spremeni stran, pridobi občutljive informacije ali celo ukrade uporabnikovo identiteto.
Sistemi predlog ne uspejo pri obrambi pred XSS. Latte je edini sistem z učinkovito obrambo, zahvaljujoč t.i. kontekstno občutljivemu ubežanju.
Kdor želi imeti dobro zavarovano spletno mesto, uporablja Latte.
Kviz: se lahko ubranite pred ranljivostjo XSS?
Vir podatkov: Acunetix Web Vulnerability Report
Primer samodejnega ubežanja spremenljivke $text
v več
različnih kontekstih (zgornjo predlogo lahko urejate):
{var $text = "O'Neill"} - v besedilu: <span>{$text}</span> - v atributu: <span title={$text}></span> - v atributu brez narekovajev: <span title={$text}></span> - v JavaScriptu: <script>var = {$text}</script>
- v besedilu: <span>O'Neill</span> - v atributu: <span title='O'Neill'></span> - v atributu brez narekovajev: <span title="O'Neill"></span> - v JavaScriptu: <script>var = "O'Neill"</script>
Ne pretiravamo. Jezik Latte res že poznate. V njem že znate pisati izraze. Pišejo se namreč povsem enako kot v PHP. Zato vam ni treba razmišljati, kako se kaj piše v Latte. Ni vam treba iskati po dokumentaciji. Ni vam treba učiti drugega jezika. Preprosto pišete kot v PHP. Več o sintaksi Latte
<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 izhaja iz PHP, medtem ko Twig izhaja iz Pythona. Oblikovalcu v Latte
ni treba nenehno preklapljati med dvema različnima konvencijama. Na primer med
for person in people
v predlogah in
foreach $people as $person
v PHP. Prav tako mu ni treba
razmišljati, kje uporabiti {% %}
in kje {{ }}
, saj
ima Latte en sam ločevalnik {...}
.
Preizkusite orodje za pretvorbo predlog Twig v 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>
To funkcijo uporabniki obožujejo. Imenujemo jo
n:atributi. Vsako parno oznako, kot na primer
{if} … {/if}
, ki obdaja HTML element, je mogoče zapisati kot
njegov atribut n:if
. Tako dosežete zelo varčen zapis. Atributi
imajo lahko še predpono inner-
in tag-
, potem se
vedenje nanaša na notranjost elementa oz. na odpiralno in zapiralno HTML
oznako. Več
o n-atributih
Z uporabo n-atributov:
<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>
Enako brez njih:
{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 ima izvorno podporo v NetBeans in odličen vtičnik za PhpStorm, ki predlaga oznake, filtre in PHP kodo.
Bodite vedno na tekočem. Vtičnik za Tracy na vsaki strani obvešča, katere predloge in katere spremenljivke se izrisujejo.
Latte je sistem predlog nove generacije – razume jezik HTML. Kjer drugi sistemi vidijo le kup znakov, Latte vidi HTML elemente. Zato ima dve čudoviti funkciji, kot sta kontekstno ubežanje in n:atributi.
Kako predlogo vidijo Blade, Twig in drugi sistemi
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Kako predlogo vidi 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>
Prefinjeni mehanizmi ponovne uporabe in dedovanja predlog povečajo vašo produktivnost, saj vsaka predloga vsebuje samo svojo edinstveno vsebino, ponavljajoči se elementi in strukture pa se ponovno uporabijo.
Latte ima oklepni bunker neposredno pod pokrovom. Imenuje se peskovniški način in izolira predloge iz nezaupljivih virov, ki jih na primer urejajo sami uporabniki. Omogoča jim omejen dostop do oznak, filtrov, funkcij, metod itd. Kako deluje?
Latte med izvajanjem prevaja predloge v optimalno PHP kodo. Torej je popolnoma enako hitro, kot če bi pisali čisto PHP. Prevedena koda je pregledna in jo lahko enostavno odpravljate napake. Ob vsaki spremembi predloge se seveda ponovno prevede.
Latte razvijamo že več kot 18 let – in število še vedno raste! Knjižnice, ki jih nudimo, so zato zelo zrele, stabilne in široko uporabljene. Zaupajo jim številne globalne korporacije in poganjajo mnogo pomembnih spletnih strani. Kdo uporablja in zaupa Latte?
Bralci pohvalijo dokumentacijo za jasnost in popolnost. Želimo vam prijetno branje.
Latte je odprtokoden in ga lahko uporabljate popolnoma brezplačno.