Najpogostejša kritična ranljivost v spletnih mestih je križno skriptiranje (Cross-Site Scripting, XSS). Napadalcu omogoča, da na stran vstavi zlonamerno skripto, ki se izvede v brskalniku nič hudega slutečega uporabnika. Tako lahko spremeni stran, pridobi občutljive podatke ali celo ukrade uporabnikovo identiteto.
Sistemi za oblikovanje predlog se ne morejo zaščititi pred XSS. Latte je edini sistem z učinkovito obrambo zaradi kontekstno občutljivega pobega.
Vsak, ki želi dobro zaščiteno spletno mesto, uporablja Latte.
Kviz: Ali se lahko zaščitite pred ranljivostjo XSS?
Vir: Acunetix Web Vulnerability Report
Primer samodejnega eskapiranja spremenljivke $text
v več
različnih kontekstih (urejate lahko zgornjo predlogo):
{var $text = "O'Neill"} - v besedilu: <span>{$text}</span> - v atributu: <span title={$text}></span> - v neocitiranem atributu: <span title={$text}></span> - v javascriptu: <script>var = {$text}</script>
- v besedilu: <span>O'Neill</span> - v atributu: <span title='O'Neill'></span> - v neocitiranem atributu: <span title="O'Neill"></span> - v javascriptu: <script>var = "O'Neill"</script>
Ne šalimo se, jezik Latte že poznate. V njem že znate pisati izraze. Pravzaprav so zapisani popolnoma enako kot v jeziku PHP. Zato vam ni treba razmišljati o tem, kako zapisati stvari v jeziku Latte. Ni vam treba iskati v dokumentaciji. Ni se vam treba učiti drugega jezika. Preprosto pišete tako 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 temelji na PHP, Twig pa na Pythonu. Oblikovalcu v Latteju ni treba
nenehno preklapljati med dvema različnima konvencijama. Na primer med
for person in people
predlogah in
foreach $people as $person
v PHP. Niti mu ni treba razmišljati,
kje uporabiti {% %}
in kje {{ }}
, saj ima Latte en sam
ločilnik {...}
.
Preizkusite orodje Twig to Latte tool.
<ul>
{foreach $foo->items as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
<ul>
{% for item in foo.items %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
Uporabnikom je ta funkcija všeč. Imenujemo jo n:atributi. Vse
parne oznake, kot so {if} ... {/if}
.. {if} ... {/if}
ovijajo element HTML, lahko zapišemo kot njegov atribut n:if
. To
omogoča zelo učinkovit zapis. Atributi imajo lahko tudi predponi
inner-
in tag-
, potem se obnašanje nanaša na
notranjost elementa oziroma na začetno in končno oznako HTML. Več o n-atributih
Uporaba 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>
In 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 izvirno podporo v NetBeans in odličen vtičnik za PhpStorm, ki predlaga oznake, filtre in kodo PHP.
Ostanite v stiku. Vtičnik za Tracy vas na vsaki strani obvesti, katere predloge in katere spremenljivke se prikažejo.
Latte je šablonski sistem naslednje generacije – razume HTML. Medtem ko drugi sistemi vidijo le niz znakov, Latte vidi elemente HTML. Zato ima dve neverjetni funkciji, kot sta kontekstno občutljivo eskapiranje in n:atributi.
Kako Blade, Twig in drugi sistemi vidijo predlogo
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Kako Latte vidi predlogo
<!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 le svojo edinstveno vsebino, ponavljajoči se elementi in strukture pa so ponovno uporabljeni.
Latte ima pod pokrovom motorja oklepni bunker. Imenuje se način peskovnika in šablone izolira od nezaupljivih virov, kot so tisti, ki jih urejajo uporabniki sami. Omogoča jim omejen dostop do oznak, filtrov, funkcij, metod itd. Kako deluje?
Latte sestavi predlogo do optimalne kode PHP hkrati z vašim delom. Torej je tako hitra, kot če bi ustvarili samo PHP. Sestavljena koda PHP je jasna in enostavna za razhroščevanje. Predloga se samodejno ponovno sestavi vsakič, ko spremenimo izvorno datoteko.
Latte razvijamo že več kot 15 let – in še naprej! Knjižnice, ki jih zagotavljamo, so zato zelo zrele, stabilne in široko uporabljene. Zaupajo jim številne svetovne korporacije, na nas pa se zanašajo tudi številna pomembna spletna mesta. Kdo uporablja in zaupa Latte?
Bralci hvalijo dokumentacijo zaradi jasnosti in popolnosti. Želimo vam prijetno branje.
Latte je odprtokoden in popolnoma brezplačen za uporabo.