Cea mai frecventă vulnerabilitate critică a site-urilor web este Cross-Site Scripting (XSS). Aceasta permite unui atacator să injecteze un script malițios într-o pagină străină, care se va executa în browserul unui utilizator nebănuitor. Poate modifica pagina, obține informații sensibile sau chiar fura identitatea utilizatorului.
Sistemele de șabloane eșuează în apărarea împotriva XSS. Latte este singurul sistem cu o apărare eficientă datorită escapării sensibile la context.
Cine dorește un site web bine securizat, folosește Latte.
Quiz: vă puteți apăra de vulnerabilitatea XSS?
Sursa datelor: Acunetix Web Vulnerability Report
Exemplu de escapare automată a variabilei $text
în mai multe
contexte diferite (puteți edita șablonul de sus):
{var $text = "O'Neill"} - în text: <span>{$text}</span> - în atribut: <span title={$text}></span> - în atribut fără ghilimele: <span title={$text}></span> - în JavaScript: <script>var = {$text}</script>
- în text: <span>O'Neill</span> - în atribut: <span title='O'Neill'></span> - în atribut fără ghilimele: <span title="O'Neill"></span> - în JavaScript: <script>var = "O'Neill"</script>
Nu exagerăm. Deja cunoașteți limbajul Latte. Deja știți cum să scrieți expresii în el. Se scriu exact la fel ca în PHP. Așa că nu trebuie să vă gândiți cum se scrie ceva în Latte. Nu trebuie să căutați în documentație. Nu trebuie să învățați un alt limbaj. Pur și simplu scrieți ca în PHP. Mai multe despre sintaxa 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 se bazează pe PHP, în timp ce Twig se bazează pe Python. Designerul
în Latte nu trebuie să comute constant între două convenții diferite. De
exemplu, între for person in people
în șabloane și
foreach $people as $person
în PHP. Nici nu trebuie să se
gândească unde să folosească {% %}
și unde {{ }}
,
deoarece Latte are un singur delimitator {...}
.
Încercați instrumentul pentru conversia șabloanelor Twig în 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>
Utilizatorii iubesc această funcționalitate. O numim
n:atribute. Fiecare tag pereche, cum ar fi {if} … {/if}
,
care înfășoară un element HTML, poate fi scris ca atributul său
n:if
. Astfel se obține o notație foarte economică. Atributele
pot avea și prefixele inner-
și tag-
, caz în care
comportamentul se aplică la interiorul elementului, respectiv la tagurile HTML
de deschidere și închidere. Mai multe despre n-atribute
Cu utilizarea n:atributelor:
<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>
Același lucru fără ele:
{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 are suport nativ în NetBeans și un plugin excelent pentru PhpStorm, care sugerează taguri, filtre și cod PHP.
Fiți mereu la curent. Pluginul pentru Tracy vă informează pe fiecare pagină ce șabloane și ce variabile sunt randate.
Latte este un sistem de șabloane de nouă generație – înțelege limbajul HTML. Acolo unde alte sisteme văd doar o grămadă de caractere, Latte vede elemente HTML. De aceea are două funcții uimitoare, cum ar fi escaparea sensibilă la context și n:atributele.
Cum văd șablonul Blade, Twig și alte sisteme
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Cum vede șablonul 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>
Mecanismele elaborate de reutilizare și moștenire a șabloanelor vă vor crește productivitatea, deoarece fiecare șablon conține doar conținutul său unic, iar elementele și structurile repetate sunt reutilizate.
Latte are un buncăr blindat chiar sub capotă. Se numește mod sandbox și izolează șabloanele din surse nesigure, cum ar fi cele editate de utilizatorii înșiși. Le oferă acces limitat la taguri, filtre, funcții, metode etc. Cum funcționează?
Latte compilează șabloanele în cod PHP optimizat în timpul rulării. Așadar, este la fel de rapid ca și cum ați scrie PHP pur. Codul compilat este clar și ușor de depanat. Desigur, la fiecare modificare a șablonului, acesta este recompilat automat.
Dezvoltăm Latte de peste 18 ani – și numărul continuă să crească! Bibliotecile pe care le oferim sunt, prin urmare, foarte mature, stabile și utilizate pe scară largă. Au încredere în ele numeroase corporații globale și alimentează multe site-uri web importante. Cine folosește și are încredere în Latte?
Cititorii laudă documentația pentru claritate și caracterul complet. Vă dorim o lectură plăcută.
Latte este open source și îl puteți folosi complet gratuit.