Web sitelerindeki en yaygın kritik güvenlik açığı Siteler Arası Komut Dosyası Oluşturma'dır (XSS). Bir saldırganın, şüphelenmeyen bir kullanıcının tarayıcısında çalıştırılan bir sayfaya kötü amaçlı bir komut dosyası eklemesine olanak tanır. Sayfayı değiştirebilir, hassas bilgileri elde edebilir ve hatta kullanıcının kimliğini çalabilir.
Şablonlama sistemleri XSS'ye karşı savunmada başarısızdır. Latte, içeriğe duyarlı kaçış sayesinde etkili bir savunmaya sahip tek sistemdir.
İyi güvenlikli bir web sitesi isteyen herkes Latte kullanır.
Test: XSS güvenlik açığına karşı savunma yapabilir misiniz?
Kaynak: Acunetix Web Güvenlik Açığı Raporu
Birkaç farklı bağlamda $text
değişkeninin otomatik
kaçışına örnek (üst şablonu düzenleyebilirsiniz):
{var $text = "O'Neill"} - metin içinde: <span>{$text}</span> - öznitelik içinde: <span title={$text}></span> - tırnak içine alınmamış öznitelikte: <span title={$text}></span> - içinde JavaScript: <script>var = {$text}</script>
- Metin içinde: <span>O'Neill</span> - öznitelik içinde: <span title='O'Neill'></span> - tırnak içine alınmamış öznitelikte: <span title="O'Neill"></span> - içinde JavaScript: <script>var = "O'Neill"</script>
Şaka yapmıyoruz, Latte dilini zaten biliyorsunuz. İçinde nasıl ifade yazılacağını zaten biliyorsunuz. Aslında, tıpkı PHP'de olduğu gibi yazılırlar. Yani Latte'de bir şeyleri nasıl yazacağınızı düşünmek zorunda değilsiniz. Belgelere bakmak zorunda değilsiniz. Başka bir dil öğrenmek zorunda değilsiniz. Sadece PHP'deki gibi yazarsınız. “Latte sözdizimi hakkında daha fazla bilgi için .[more-about]:/tr/syntax”
<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 PHP tabanlıdır, Twig ise Python tabanlıdır. Latte'deki bir
tasarımcı sürekli olarak iki farklı kural arasında geçiş yapmak zorunda
değildir. Örneğin, şablonlardaki for person in people
ile
PHP'deki foreach $people as $person
arasında. Nerede
{% %}
ve nerede {{ }}
kullanacağını düşünmesi
bile gerekmez, çünkü Latte'de tek bir {.. {...}
sınırlayıcısı vardır.
Twig to Latte aracını deneyin.
<ul>
{foreach $foo->items as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
<ul>
{% for item in foo.items %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
Kullanıcılar bu özelliği çok seviyor. Biz buna
n:attributes diyoruz. Herhangi bir eşleştirilmiş etiket, örneğin
{if} ... {/if}
{if} ... {/if}
{if} ... {/if}
eşleştirilmiş etiketler n:if
özniteliği olarak yazılabilir. Bu çok verimli bir gösterim sağlar.
Öznitelikler ayrıca inner-
ve tag-
öneklerine sahip
olabilir, bu durumda davranış, sırasıyla açılış ve bitiş HTML
etiketleri olmak üzere öğenin içine uygulanır. “n-attributes hakkında
daha fazla bilgi .[more-about]:/tr/syntax#toc-n-atributy”
n:attributes kullanımı:
<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>
Ve Onlar Olmadan da Aynı:
{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'nin NetBeans'te yerel desteği ve etiketler, filtreler ve PHP kodu öneren mükemmel bir PhpStorm eklentisi vardır.
İletişimde kalın. Tracy için eklenti her sayfada hangi şablonların ve hangi değişkenlerin işlendiğini size bildirir.
Latte yeni nesil bir şablonlama sistemidir – HTML'yi anlar.
Diğer sistemler yalnızca bir grup karakteri görürken, Latte HTML öğelerini
görür.
Bağlama duyarlı
kaçış ve n:attributes gibi iki
şaşırtıcı özelliğe sahip olmasının nedeni budur.
Blade, Twig ve diğer sistemler şablonu nasıl görür?
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Latte şablonu nasıl görüyor?
<!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>
Gelişmiş şablon yeniden kullanım ve miras mekanizmaları üretkenliğinizi artırır çünkü her şablon yalnızca kendine özgü içeriği içerir ve tekrarlanan öğeler ve yapılar yeniden kullanılır.
Latte'nin kaputunun altında zırhlı bir sığınak var. Buna sandbox modu deniyor ve şablonları, kullanıcıların kendileri tarafından düzenlenenler gibi güvenilmeyen kaynaklardan izole ediyor. Onlara etiketlere, filtrelere, işlevlere, yöntemlere vb. sınırlı erişim sağlar. Nasıl çalışıyor?
Latte, siz çalışırken aynı anda şablonu en uygun PHP koduna kadar derler. Yani tamamen PHP oluşturmuşsunuz gibi hızlıdır. Derlenen PHP kodu açıktır ve hata ayıklaması kolaydır. Kaynak dosyayı her değiştirdiğimizde şablon otomatik olarak yeniden derlenir.
Latte'yi 15 yılı aşkın bir süredir geliştiriyoruz ve geliştirmeye devam ediyoruz! Sağladığımız kütüphaneler bu nedenle son derece olgun, kararlı ve yaygın olarak kullanılmaktadır. Bir dizi küresel şirket tarafından güveniliyorlar ve birçok önemli web sitesi bize güveniyor. Latte'yi kimler kullanıyor ve güveniyor?
Okuyucular, belgeleri açıklık ve bütünlük açısından övüyor. Keyifli okumalar dileriz.
Latte açık kaynak kodludur ve kullanımı tamamen ücretsizdir.