Zakaj uporabljati predloge?
- Zakaj naj v PHP uporabljam sistem predlog?
- Zakaj je Latte boljši od Twiga ali Bladea?
- Kaj je escaping?
- Ali je mogoče iz predloge Latte izvesti poizvedbo v zbirko podatkov?
- Katere so glavne razlike med sistemi za oblikovanje predlog, kot so Latte, Twig in Blade?
- Ali se podjetjem splača uporabljati sistem za oblikovanje predlog?
- Ali Latte vpliva na zmogljivost spletnih aplikacij?
Zakaj naj v PHP uporabljam sistem predlog?
Zakaj bi v PHP uporabljali sistem predlog, če je PHP sam jezik za oblikovanje predlog?
Najprej na kratko obnovimo zgodovino tega jezika, ki je polna zanimivih preobratov. Eden prvih programskih jezikov, ki se je uporabljal za izdelavo strani HTML, je bil jezik C. Vendar se je kmalu izkazalo, da je njegova uporaba v ta namen nepraktična. Zato je Rasmus Lerdorf ustvaril PHP, ki je omogočal generiranje dinamičnega HTML z jezikom C v ozadju. PHP je bil prvotno zasnovan kot jezik za oblikovanje predlog, vendar je sčasoma pridobil dodatne funkcije in postal polnopravni programski jezik.
Kljub temu še vedno deluje kot jezik za oblikovanje predlog. Datoteka PHP lahko vsebuje stran HTML, v kateri se spremenljivke
izpišejo z uporabo <?= $foo ?>
, itd.
Na začetku zgodovine jezika PHP je bil ustvarjen sistem predlog Smarty, katerega namen je bil strogo ločiti videz (HTML/CSS) od aplikacijske logike. Namenoma je zagotavljal bolj omejen jezik kot sam PHP, tako da razvijalec na primer ni mogel iz predloge opraviti poizvedbe po zbirki podatkov itd. Po drugi strani pa je predstavljal dodatno odvisnost v projektih, povečal njihovo kompleksnost in od programerjev zahteval, da se naučijo novega jezika Smarty. Takšne prednosti so bile sporne, zato se je za predloge še naprej uporabljal navaden PHP.
Sčasoma so sistemi predlog začeli postajati uporabni. Uvedli so koncepte, kot so dedovanje, način peskovnika in številne druge funkcije, ki so v primerjavi s čistim PHP bistveno poenostavile ustvarjanje predlog. V ospredje so prišli varnost, obstoj ranljivosti, kot je XSS, in potreba po pobegih. Sistemi predlog so uvedli samodejno izrivanje, da bi odpravili tveganje, da bi programer pozabil na to in ustvaril resno varnostno luknjo (kmalu bomo videli, da ima to določene pasti).
Danes so prednosti sistemov predlog veliko večje od stroškov, povezanih z njihovo uvedbo. Zato jih je smiselno uporabljati.
Zakaj je Latte boljši od Twiga ali Bladea?
Razlogov je več – nekateri so prijetni, drugi izjemno uporabni. Latte je kombinacija prijetnega in uporabnega.
Najprej prijetno: Latte ima enako sintakso kot
PHP. Edina razlika je v zapisu oznak, saj ima raje krajše {
in }
namesto <?=
in
?>
. To pomeni, da se vam ni treba učiti novega jezika. Stroški usposabljanja so minimalni. Najpomembneje pa je,
da vam med razvojem ni treba nenehno “preklapljati” med jezikom PHP in jezikom predlog, saj sta oba enaka. Za razliko od
predlog Twig, ki uporabljajo jezik Python, mora programer preklapljati med dvema različnima jezikoma.
- Zdaj pa še izjemno uporaben razlog:* Vsi sistemi predlog, kot so Twig, Blade ali Smarty, so se razvili tako, da vključujejo
zaščito pred XSS v obliki samodejnega eskapiranja. Natančneje, samodejni klic funkcije
htmlspecialchars()
. Vendar so ustvarjalci sistema Latte ugotovili, da to sploh ni prava rešitev. Razlog za to je, da različni deli dokumenta zahtevajo različne metode escapiranja. Naivno samodejno izpisovanje je nevarna funkcija, saj ustvarja lažen občutek varnosti.
Da bi bilo samodejno izpisovanje funkcionalno in zanesljivo, mora prepoznati, kje v dokumentu se podatki izpisujejo (imenujemo jih konteksti), in ustrezno izbrati funkcijo izpisovanja. Zato mora biti občutljivo na kontekst. In to zna Latte. Razume HTML. Predloge ne dojema le kot niz znakov, temveč razume, kaj so oznake, atributi itd. Zato različno eskapira v besedilu HTML, znotraj oznak HTML, znotraj JavaScripta itd.
Latte je prvi in edini sistem predlog PHP s kontekstno občutljivim eskapiranjem. Predstavlja edini resnično varen sistem predlog.
In še en prijeten razlog: Ker Latte razume HTML, ponuja še druge zelo prijetne funkcije. Na primer, n:atributi. ali možnost preverjanja povezav. In še veliko več.
Kaj je escaping?
Escaping je postopek, ki vključuje zamenjavo znakov s posebnim pomenom z ustreznimi zaporedji pri vstavljanju enega niza
v drugega, da se preprečijo neželeni učinki ali napake. Na primer, pri vstavljanju niza v besedilo HTML, v katerem ima znak
<
poseben pomen, saj označuje začetek oznake, ga nadomestimo z ustreznim zaporedjem, ki je entiteta HTML
<
. Tako lahko brskalnik pravilno prikaže simbol <
.
Preprost primer neposrednega pobega pri pisanju kode PHP je vstavljanje narekovaja v niz tako, da pred njega postavimo povratno poševnico.
Podrobneje o pobegih govorimo v poglavju Kako se braniti pred XSS.
Ali je mogoče iz predloge Latte izvesti poizvedbo v zbirko podatkov?
V predlogah lahko delate s predmeti, ki jim jih posreduje programer. Če programer želi, lahko predlogi posreduje objekt podatkovne zbirke in izvede poizvedbo. Če nameravajo to storiti, ni razloga, da bi jim to preprečili.
Drugačen položaj nastane, če želite strankam ali zunanjim programerjem omogočiti urejanje predlog. V tem primeru zagotovo ne želite, da bi imeli dostop do podatkovne zbirke. Seveda objekta podatkovne zbirke ne boste posredovali predlogi, kaj pa, če je do nje mogoče dostopati prek drugega objekta? Rešitev je način peskovnika, ki vam omogoča, da določite, katere metode se lahko kličejo v predlogah. Zaradi tega vam ni treba skrbeti za varnostne kršitve.
Katere so glavne razlike med sistemi za oblikovanje predlog, kot so Latte, Twig in Blade?
Razlike med sistemi za oblikovanje predlog, kot so Latte, Twig in Blade, so predvsem v njihovi sintaksi, varnosti in integraciji z ogrodji:
- Latte: uporablja sintakso jezika PHP, zato se ga je lažje naučiti in uporabljati. Zagotavlja vrhunsko zaščito pred napadi XSS.
- Twig: uporablja sintakso, podobno jeziku Python, ki se precej razlikuje od PHP. Izhaja brez razlikovanja konteksta. Dobro je integriran z ogrodjem Symfony.
- Blade: uporablja mešanico sintakse PHP in lastne sintakse. Izhaja brez razlikovanja konteksta. Tesno je povezan s funkcijami in ekosistemom Laravel.
Ali se podjetjem splača uporabljati sistem za oblikovanje predlog?
Prvič, stroški, povezani z usposabljanjem, uporabo in splošnimi koristmi, se močno razlikujejo glede na sistem. Sistem za oblikovanje predlog Latte zaradi uporabe sintakse PHP močno poenostavi učenje za programerje, ki so že seznanjeni s tem jezikom. Običajno programer potrebuje nekaj ur, da se dovolj dobro seznani s sistemom Latte, kar zmanjša stroške usposabljanja in pospeši uvajanje tehnologije ter, kar je najpomembneje, učinkovitost pri vsakodnevni uporabi.
Poleg tega program Latte zagotavlja visoko raven zaščite pred ranljivostmi XSS zaradi svoje edinstvene tehnologije pobegov, ki upošteva kontekst. Ta zaščita je ključnega pomena za zagotavljanje varnosti spletnih aplikacij in zmanjševanje tveganja napadov, ki bi lahko ogrozili uporabnike ali podatke podjetja. Varnost spletnih aplikacij je pomembna tudi za ohranjanje dobrega ugleda podjetja. Varnostne težave lahko povzročijo izgubo zaupanja strank in škodijo ugledu podjetja na trgu.
Z uporabo Latte se zmanjšajo tudi skupni stroški razvoja in vzdrževanja, saj je oboje lažje. Zato se uporaba sistema za oblikovanje predlog vsekakor splača.
Ali Latte vpliva na zmogljivost spletnih aplikacij?
Čeprav se predloge Latte obdelujejo hitro, ta vidik ni pomemben. Razlog je v tem, da se razčlenjevanje datotek izvede samo enkrat med prvim prikazom. Nato se sestavijo v kodo PHP, shranijo na disk in se zaženejo pri vsakem naslednjem zahtevku, ne da bi bilo potrebno ponovno sestavljanje.
Tako deluje v produkcijskem okolju. Med razvojem se predloge Latte ponovno sestavijo vsakič, ko se spremeni njihova vsebina, zato razvijalec vedno vidi trenutno različico.