Cea mai frecventă vulnerabilitate critică a site-urilor web este Cross-Site Scripting (XSS). Aceasta permite unui atacator să insereze un script malițios într-o pagină care se execută în browserul unui utilizator neștiutor. Acesta poate modifica pagina, poate obține informații sensibile sau chiar poate fura identitatea utilizatorului.
Sistemele de creare de șabloane nu reușesc să se apere împotriva XSS. Latte este singurul sistem cu o apărare eficientă, datorită scăpării sensibile la context.
Oricine dorește un site web bine securizat folosește Latte.
Quiz: Vă puteți apăra împotriva vulnerabilității XSS?
Sursă: Raportul Acunetix Web Vulnerability Report
Exemplu de scăpare 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 atributul necotat: <span title={$text}></span> - în JavaScript: <script>var = {$text}</script>
- în text: <span>O'Neill</span> - în atribut: <span title='O'Neill'></span> - în atributul necotat: <span title="O'Neill"></span> - în JavaScript: <script>var = "O'Neill"</script>
Nu glumim, cunoști deja limba Latte. Știți deja cum să scrieți expresii în ea. De fapt, acestea sunt scrise exact ca în PHP. Așa că nu trebuie să vă gândiți cum să scrieți lucruri î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. Un
proiectant din Latte nu trebuie să treacă în mod constant între două
convenții diferite. De exemplu, între for person in people
în
șabloane și foreach $people as $person
în PHP. El nici măcar nu
trebuie să se gândească unde să folosească {% %}
și unde să
folosească {{ }}
, deoarece Latte are un singur delimitator
{...}
.
Încercați 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>
Utilizatorii adoră această funcție. Noi o numim
n:attributes. Orice etichete împerecheate, cum ar fi
{if} ... {/if}
. {if} ... {/if}
care înfășoară un
element HTML poate fi scris ca atribut n:if
al acestuia. Acest
lucru face ca notația să fie foarte eficientă. Atributele pot avea, de
asemenea, prefixele inner-
și tag-
, atunci
comportamentul se aplică în interiorul elementului, respectiv în tag-urile
HTML de deschidere și de încheiere. Mai multe despre n-attributes
Utilizarea n:attributes:
<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>
Și la fel 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 excelent plugin pentru PhpStorm care sugerează etichete, filtre și cod PHP.
Rămâneți în contact. Plugin pentru Tracy vă informează pe fiecare pagină ce șabloane și ce variabile sunt redate.
Latte este un sistem de șabloane de generație următoare – înțelege HTML. În timp ce alte sisteme văd doar o grămadă de caractere, Latte vede elementele HTML. Acesta este motivul pentru care dispune de două caracteristici uimitoare, cum ar fi " context-sensitive escaping":/ro/safety-first#toc-context-aware-escaping și n:attributes.
Cum văd Blade, Twig și alte sisteme șablonul
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Cum vede Latte șablonul
<!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 sofisticate de reutilizare și moștenire a șabloanelor vă sporesc 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 modul sandbox și izolează șabloanele de sursele nesigure, cum ar fi cele editate chiar de către utilizatori. Le oferă acestora acces limitat la etichete, filtre, funcții, metode etc. Cum funcționează?
Latte compilează șablonul în codul PHP optim în același timp cu munca dumneavoastră. Astfel, este la fel de rapid ca și cum ați fi creat pur PHP. Codul PHP compilat este clar și ușor de depanat. Șablonul este recompilat automat de fiecare dată când modificăm fișierul sursă.
Dezvoltăm Latte de peste 15 ani – și încă mai mult! Prin urmare, bibliotecile pe care le furnizăm sunt foarte mature, stabile și utilizate pe scară largă. Ele sunt de încredere pentru o serie de corporații globale și multe site-uri web importante se bazează pe noi. Cine folosește și are încredere în Latte?
Cititorii laudă documentația pentru claritate și exhaustivitate. Vă dorim o lectură plăcută.
Latte este open source și este complet liber de utilizat.