Zakaj uporabljati predloge?

Zakaj bi moral uporabljati sistem predlog v PHP?

Zakaj uporabljati sistem predlog v PHP, ko je PHP sam po sebi jezik predlog?

Najprej na kratko povzemimo zgodovino tega jezika, ki je polna zanimivih preobratov. Eden prvih programskih jezikov, uporabljenih za generiranje HTML strani, je bil jezik C. Kmalu pa se je izkazalo, da je njegova uporaba za ta namen nepraktična. Rasmus Lerdorf je zato ustvaril PHP, ki je olajšal generiranje dinamičnega HTML z jezikom C v zaledju. PHP je bil torej prvotno zasnovan kot jezik predlog, vendar je sčasoma pridobil dodatne funkcije in postal polnopraven programski jezik.

Kljub temu še vedno deluje tudi kot jezik predlog. V datoteki PHP je lahko zapisana HTML stran, v kateri se s pomočjo <?= $foo ?> izpisujejo spremenljivke itd.

Že v začetkih zgodovine PHP je nastal sistem predlog Smarty, katerega namen je bil strogo ločiti videz (HTML/CSS) od aplikacijske logike. Torej je namerno zagotavljal bolj omejen jezik kot sam PHP, da razvijalec ne bi mogel na primer izvesti poizvedbe v bazo podatkov iz predloge ipd. Po drugi strani pa je predstavljal dodatno odvisnost v projektih, povečeval njihovo kompleksnost in programerji so se morali učiti novega jezika Smarty. Takšna korist je bila sporna in še naprej se je za predloge uporabljal navaden PHP.

Sčasoma so sistemi predlog postajali koristni. Prišli so s konceptom dedovanja, peskovniškim načinom in vrsto drugih funkcij, ki so znatno poenostavile ustvarjanje predlog v primerjavi s čistim PHP. V ospredje je prišla tema varnosti, obstoj ranljivosti kot XSS in nujnost ubežanja znakov. Sistemi predlog so prišli s samodejnim ubežanjem znakov, da bi izginilo tveganje, da bi programer na to pozabil in bi nastala resna varnostna luknja (čez trenutek si bomo pokazali, da ima to določene pasti).

Koristi sistemov predlog danes znatno presegajo stroške, povezane z njihovo uvedbo. Zato jih je smiselno uporabljati.

Zakaj je Latte boljši od na primer Twiga ali Bladea?

Razlogov je kar več – nekateri so prijetni in drugi bistveno koristni. Latte je kombinacija prijetnega s koristnim.

Najprej tisti prijeten: Latte ima enako sintakso kot PHP. Razlikuje se le zapis značk, namesto <?= in ?> preferira krajša { in }. To pomeni, da se vam ni treba učiti novega jezika. Stroški usposabljanja so minimalni. In predvsem se med razvojem ni treba nenehno “preklapljati” med jezikom PHP in jezikom predloge, saj sta oba enaka. Za razliko od predlog Twig, ki uporabljajo jezik Python, in se mora programer tako preklapljati med dvema različnima jezikoma.

In zdaj razlog izjemno koristen: Vsi sistemi predlog, kot so Twig, Blade ali Smarty, so v teku evolucije prišli z zaščito pred XSS v obliki samodejnega ubežanja znakov. Natančneje rečeno samodejnega klicanja funkcije htmlspecialchars(). Ustvarjalci Latte pa so se zavedali, da to sploh ni pravilna rešitev. Ker se na različnih mestih dokumenta ubežijo znaki na različne načine. Naivno samodejno ubežanje znakov je nevarna funkcija, ker ustvarja lažen občutek varnosti.

Da bi bilo samodejno ubežanje znakov funkcionalno in zanesljivo, mora prepoznavati, na katerem mestu v dokumentu se podatki izpisujejo (imenujemo jih konteksti) in glede na to izbrati funkcijo za ubežanje znakov. Torej mora biti kontekstno občutljivo. In točno to Latte zna. Razume HTML. Predloge ne dojema le kot niz znakov, ampak razume, kaj so značke, atributi itd. In zato drugače ubeži znake v HTML besedilu, drugače znotraj HTML značke, drugače znotraj JavaScripta itd.

Latte je prvi in edini sistem predlog v PHP, ki ima kontekstno občutljivo ubežanje znakov. Predstavlja tako edini resnično varen sistem predlog.

In še en prijeten razlog: Zahvaljujoč temu, da Latte razume HTML, ponuja druge zelo prijetne izboljšave. Na primer n:atribute. Ali sposobnost preverjanja povezav. In mnogo drugih.

Kaj je ubežanje znakov / escaping?

Ubežanje znakov je proces, ki temelji na zamenjavi znakov s posebnim pomenom z ustreznimi zaporedji pri vstavljanju enega niza v drugega, da se preprečijo nezaželeni pojavi ali napake. Na primer, ko vstavljamo niz v HTML besedilo, v katerem ima znak < poseben pomen, saj označuje začetek značke, ga nadomestimo z ustreznim zaporedjem, kar je HTML entiteta &lt;. Zahvaljujoč temu brskalnik pravilno prikaže simbol <.

Enostaven primer ubežanja znakov neposredno pri pisanju kode v PHP je vstavljanje narekovaja v niz, ko pred njim napišemo poševnico nazaj.

Podrobneje ubežanje znakov razčlenjujemo v poglavju Kako se braniti pred XSS.

Ali je mogoče v Latte izvesti poizvedbo v bazo podatkov iz predloge?

V predlogah je mogoče delati z objekti, ki jih programer posreduje vanje. Če torej programer želi, lahko v predlogo posreduje objekt baze podatkov in nad njim izvede poizvedbo. Če ima takšen namen, ni razloga, da bi mu v tem preprečevali.

Druga situacija nastane, če želite dati možnost urejanja predlog strankam ali zunanjim koderjem. V takem primeru vsekakor nočete, da bi imeli dostop do baze podatkov. Seveda predlogi ne boste posredovali objekta baze podatkov, kaj pa, če je mogoče do nje priti preko drugega objekta? Rešitev je peskovniški način, ki omogoča definiranje, katere metode je mogoče klicati v predlogah. Zahvaljujoč temu se vam ni treba bati kršitve varnosti.

Kakšne so glavne razlike med sistemi predlog, kot so Latte, Twig in Blade?

Razlike med sistemi predlog Latte, Twig in Blade temeljijo predvsem na sintaksi, varnosti in načinu integracije v ogrodja

  • Latte: uporablja sintakso jezika PHP, kar olajšuje učenje in uporabo. Zagotavlja vrhunsko zaščito pred XSS napadi.
  • Twig: uporablja sintakso jezika Python, ki se precej razlikuje od PHP. Ubeži znake brez razlikovanja konteksta. Je dobro integriran v ogrodje Symfony.
  • Blade: uporablja mešanico PHP in lastne sintakse. Ubeži znake brez razlikovanja konteksta. Je tesno integriran s funkcijami Laravel in ekosistemom.

Ali se podjetjem splača uporabljati sistem predlog?

Najprej, stroški, povezani z usposabljanjem, uporabo in skupno koristjo, se znatno razlikujejo glede na sistem. Sistem predlog Latte zahvaljujoč temu, da uporablja sintakso PHP, zelo poenostavlja učenje za programerje, ki so že seznanjeni s tem jezikom. Običajno traja nekaj ur, da se programer z Latte dovolj seznani. Zmanjšuje torej stroške usposabljanja. Hkrati pospešuje usvajanje tehnologije in predvsem učinkovitost pri vsakodnevni uporabi.

Nadalje Latte zagotavlja visoko raven zaščite pred ranljivostjo XSS zahvaljujoč edinstveni tehnologiji kontekstno občutljivega ubežanja znakov. Ta zaščita je ključna za zagotavljanje varnosti spletnih aplikacij in minimizacijo tveganja napadov, ki bi lahko ogrozili uporabnike ali podatke podjetja. Zaščita varnosti spletnih aplikacij je pomembna tudi za ohranjanje dobrega ugleda podjetja. Varnostni problemi lahko povzročijo izgubo zaupanja s strani strank in škodujejo ugledu podjetja na trgu.

Uporaba Latte zmanjšuje tudi skupne stroške razvoja in vzdrževanja aplikacije s tem, da oboje olajšuje. Uporaba sistema predlog se torej nedvoumno splača.

Ali Latte vpliva na zmogljivost spletnih aplikacij?

Čeprav se predloge Latte hitro obdelujejo, ta vidik pravzaprav ni pomemben. Razlog je, da se razčlenjevanje datotek zgodi samo enkrat ob prvem prikazu. Nato se prevedejo v PHP kodo, shranijo na disk in poganjajo ob vsaki naslednji zahtevi, ne da bi bilo treba ponovno izvajati prevajanje.

To je način delovanja v produkcijskem okolju. Med razvojem se predloge Latte ponovno prevedejo vsakič, ko pride do spremembe njihove vsebine, da razvijalec vidi vedno trenutno obliko.

različica: 3.0