Η πιο συνηθισμένη κρίσιμη ευπάθεια σε ιστότοπους είναι το Cross-Site Scripting (XSS). Επιτρέπει σε έναν εισβολέα να εισάγει ένα κακόβουλο σενάριο σε μια σελίδα που εκτελείται στο πρόγραμμα περιήγησης ενός ανυποψίαστου χρήστη. Μπορεί να τροποποιήσει τη σελίδα, να αποκτήσει ευαίσθητες πληροφορίες ή ακόμη και να υποκλέψει την ταυτότητα του χρήστη.
Τα συστήματα Templating αποτυγχάνουν να αμυνθούν έναντι του XSS. Το Latte είναι το μόνο σύστημα με αποτελεσματική άμυνα, χάρη στην διαφυγή με ευαισθησία περιβάλλοντος.
Όποιος θέλει έναν καλά ασφαλισμένο ιστότοπο χρησιμοποιεί το Latte.
Κουίζ: Μπορείτε να αμυνθείτε ενάντια στην ευπάθεια XSS;
Πηγή: Latte: Acunetix Web Vulnerability Report
Παράδειγμα αυτόματης διαφυγής της
μεταβλητής $text
σε διάφορα
διαφορετικά πλαίσια (μπορείτε να
επεξεργαστείτε το κορυφαίο πρότυπο):
{var $text = "O'Neill"} - σε κείμενο: <span>{$text}</span> - σε attribute: <span title={$text}></span> - σε χαρακτηριστικό χωρίς εισαγωγικά: <span title={$text}></span> - σε JavaScript: <script>var = {$text}</script>
- στο κείμενο: <span>O'Neill</span> - σε attribute: <span title='O'Neill'></span> - σε μη παρατιθέμενο χαρακτηριστικό: <span title="O'Neill"></span> - c: <script>var = "O'Neill"</script>
Δεν αστειευόμαστε, γνωρίζετε ήδη τη γλώσσα του Latte. Ξέρετε ήδη πώς να γράφετε εκφράσεις σε αυτήν. Στην πραγματικότητα, γράφονται ακριβώς όπως και στην PHP. Έτσι, δεν χρειάζεται να σκεφτείτε πώς να γράψετε πράγματα στη Latte. Δεν χρειάζεται να ψάξετε στην τεκμηρίωση. Δεν χρειάζεται να μάθετε μια άλλη γλώσσα. Απλά γράφετε όπως στην PHP. Περισσότερα για το συντακτικό της 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 βασίζεται στην PHP, ενώ το Twig
βασίζεται στην Python. Ένας σχεδιαστής στο Latte
δεν χρειάζεται να εναλλάσσεται συνεχώς
μεταξύ δύο διαφορετικών συμβάσεων. Για
παράδειγμα, μεταξύ της for person in people
στα πρότυπα και της foreach $people as $person
στην PHP. Δεν χρειάζεται καν να σκεφτεί πού να
χρησιμοποιήσει {% %}
και πού να
χρησιμοποιήσει {{ }}
, επειδή το Latte
έχει ένα {...}
οριοθέτη.
Δοκιμάστε το εργαλείο 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>
Οι χρήστες λατρεύουν αυτή τη
λειτουργία. Το ονομάζουμε n:attributes.
Οποιεσδήποτε ζευγαρωμένες ετικέτες, όπως
{if} ... {/if}
{if} ... {/if}
που
περιβάλλουν ένα στοιχείο HTML μπορεί να
γραφτεί ως το χαρακτηριστικό n:if
.
Αυτό καθιστά πολύ αποδοτική τη
σημειογραφία. Τα χαρακτηριστικά μπορούν
επίσης να έχουν πρόθεμα inner-
και
tag-
, τότε η συμπεριφορά εφαρμόζεται
στο εσωτερικό του στοιχείου αντίστοιχα
στις ετικέτες HTML που ανοίγουν και
τελειώνουν. Περισσότερα για τα n-attributes
Χρήση των 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>
Και το ίδιο χωρίς αυτά:
{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 έχει εγγενή υποστήριξη στο NetBeans και ένα εξαιρετικό πρόσθετο για το PhpStorm που προτείνει ετικέτες, φίλτρα και κώδικα PHP.
Μείνετε σε επαφή. Το plugin for Tracy σας ενημερώνει σε κάθε σελίδα ποια πρότυπα και ποιες μεταβλητές αποδίδονται.
Το Latte είναι ένα σύστημα δημιουργίας προτύπων επόμενης γενιάς – κατανοεί την HTML. Εκεί που τα άλλα συστήματα βλέπουν μόνο μια δέσμη χαρακτήρων, το Latte βλέπει στοιχεία HTML. Αυτός είναι ο λόγος για τον οποίο διαθέτει δύο καταπληκτικά χαρακτηριστικά όπως η context-sensitive escaping και τα n:attributes.
Πώς το Blade, το Twig και άλλα συστήματα βλέπουν το πρότυπο
░░░░░░░░░░░░░░░
░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
░░░░░░░
░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░
@foreach ($navigation as $item)
░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
@endforeach
░░░░░
░░░░░░░░
░░░░░░░░░░░░{{ $appName }}░
░░░░░░░░░
░░░░░░░
░░░░░░░
Πώς βλέπει το πρότυπο το 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>
Οι εξελιγμένοι μηχανισμοί επαναχρησιμοποίησης και κληρονομικότητας προτύπων αυξάνουν την παραγωγικότητά σας, επειδή κάθε πρότυπο περιέχει μόνο το μοναδικό του περιεχόμενο και επαναλαμβανόμενα στοιχεία και δομές επαναχρησιμοποιούνται.
Το Latte διαθέτει ένα θωρακισμένο καταφύγιο ακριβώς κάτω από το καπό. Ονομάζεται λειτουργία sandbox και απομονώνει τα πρότυπα από μη αξιόπιστες πηγές, όπως αυτές που επεξεργάζονται οι ίδιοι οι χρήστες. Τους δίνει περιορισμένη πρόσβαση σε ετικέτες, φίλτρα, λειτουργίες, μεθόδους κ.λπ. Πώς λειτουργεί.
Το Latte μεταγλωττίζει το πρότυπο στο βέλτιστο κώδικα PHP ταυτόχρονα με την εργασία σας. Έτσι, είναι τόσο γρήγορο όσο αν δημιουργούσατε αμιγώς PHP. Ο μεταγλωττισμένος κώδικας PHP είναι σαφής και εύκολος στην αποσφαλμάτωση. Το πρότυπο μεταγλωττίζεται αυτόματα εκ νέου κάθε φορά που αλλάζουμε το αρχείο πηγής.
Αναπτύσσουμε τη Latte για πάνω από 15 χρόνια – και συνεχίζουμε! Οι βιβλιοθήκες που παρέχουμε είναι επομένως ιδιαίτερα ώριμες, σταθερές και ευρέως χρησιμοποιούμενες. Τις εμπιστεύονται πολλές παγκόσμιες εταιρείες και πολλοί σημαντικοί ιστότοποι βασίζονται σε εμάς. Ποιος χρησιμοποιεί και εμπιστεύεται τη Latte.
Οι αναγνώστες επαινούν την τεκμηρίωση για τη σαφήνεια και την πληρότητα. Σας ευχόμαστε ευχάριστη ανάγνωση.
Το Latte είναι ανοιχτού κώδικα και εντελώς δωρεάν στη χρήση.
How can you detect errors in templates in a timely manner? You have several methods at your disposal.
The first version of Latte 2 was released in 2014 as part of the then revolutionary splitting of the framework into a collection of standalone libraries. Version 3 of Latte, representing a major evolutionary leap was released just over a year ago.