webi Posted February 26, 2016 Report Share Posted February 26, 2016 (edited) Kā? <?=doescape($value);?> ? Jā tā var, pie nosacījuma ka vienmēr doescape tiks lietots un "nepiemirsīsies" Kuru template-engine esi lietojis? Kādu freimworku (izņemot pašrakstīto) esi lietojis? Kontrolieris nodod Viewam(Outputam) izvadāmos mainīgos caur funkciju, tur arī var darīt ar viņiem, ko iegribas. Pēc tam izvadīt html, vienkārši uzrakstot {mainīgais} var ar php nav starpības, jo mainīgais jau būs apstrādāts. Esmu strādājis ar smarty, apaudzētu ar 10x lielāku kodu un kā galveno bremzi projektā. Freimworki un pārsvarā visi PHP risinājumi pašrakstīti. Edited February 26, 2016 by webi Quote Link to comment Share on other sites More sharing options...
Blitz Posted February 26, 2016 Report Share Posted February 26, 2016 (edited) Ja mainīgie ir arrays, objects, vai collections? Kā to savā funkcijā dari? Izklausās pēc vienkārši tieši tādas pašas funkcionalitātes ko dara template-engine Esmu strādājis ar smarty, apaudzētu ar 10x lielāku kodu un kā galveno bremzi projektā.Freimworki un pārsvarā visi PHP risinājumi pašrakstīti. Nu ko lai saka, pamēģini kautko mūsdienīgu. Skaidrs ka "enterpraizzz" līmenī tu nestrādā. Edited February 26, 2016 by Blitz Quote Link to comment Share on other sites More sharing options...
Roze Posted February 26, 2016 Report Share Posted February 26, 2016 Tas ka plain PHP output escape by default nenotiek, bet template engine notiek un tam vairs nav jāpievērš speciāla uzmanība, izņemot vietās kur tu specili forcē templeitam rādit neeskeipotu saturu. Vispār jau šim ir risinājums (kas kā reiz forsē programmētājus pievērst uzmanību, kas notiek ar datiem (ne kaut kur "maģiski" kādā pluginfailā)) http://php.net/taint Nestrādā gan (vairs) uz 5.5.x un 5.6.x, bet tagad kā autors solījis izskatās ka ir releasota php7 ( http://pecl.php.net/package-changelog.php?package=taint&release=2.0.1) versija. Es pareizi saprotu, Robert, ka tu iesaki escapot datus pret XSS un tad šamus glabāt iekš datubāzes, jau escapotus? No performances viedokļa (un ja dati/apstākļi ļauj t.i. nav būtisks oriģināls), tad "eskeipotus" glabāt ir krietni labāk nekā ziljons reizes transformēt pie izvades (tāpat ar visādiem nl2br() utt). Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted February 26, 2016 Report Share Posted February 26, 2016 (edited) No performances viedokļa (un ja dati/apstākļi ļauj t.i. nav būtisks oriģināls), tad "eskeipotus" glabāt ir krietni labāk nekā ziljons reizes transformēt pie izvades (tāpat ar visādiem nl2br() utt). Tā nav slikta doma. Praktiski to dažviet gandrīz tiku realizējis, izmantojot papildus lauku (kā nodrošināt tā sinhronizēšanu ir atsevišķš temats, bet principā modeļa save() funkcijā). Bet tas vairāk tāpēc, ka papildus arī samiksēju visus meklēšanas datu laukus + saistīto tabulu laukus ērtākai meklēšanai. Bet, par šo tēmu domājot, jāņem vērā, ka tas jau ir cache un arī premature optimization. Kā zināms, nereti ziljons reizes transformēt datus pie izvades neaizņem nemaz tik daudz laika. Katrā ziņā, ne tik daudz laika, cik aizņem cilvēka darbs, meklējot un labojot kļūdas, kaut vai minēto gadījumu ar "amp" meklēšanu, u.c. variantiem. Es nerekomendētu datus glabāt tikai HTML izvadei sagatavotā formātā, pat vairāk - uzskatu, ka tā ir nepareiza arhiektūra. Vēl, piebilde - lielie FW pirms vispār nonāk līdz templeitam, ir veikuši tik daudz funkciju izsaukumus, ka eskeipošanas īpatsvars jau kļūst niecīgs. Otrkārt, dažādi cache slāņi šo jautājumu jau var risināt citādos veidos un atlikušais dinamiski renderētais outputs samazina eskeipošanas slodzes īpatsvaru. Protams, labāk ir tad, ja tiek ietaupīts arī tas, bet jāņem vērā balanss. Edited February 26, 2016 by Mr.Key Quote Link to comment Share on other sites More sharing options...
webi Posted February 26, 2016 Report Share Posted February 26, 2016 Ja mainīgie ir arrays, objects, vai collections? Kā to savā funkcijā dari? Izklausās pēc vienkārši tieši tādas pašas funkcionalitātes ko dara template-engine Nu ko lai saka, pamēģini kautko mūsdienīgu. Skaidrs ka "enterpraizzz" līmenī tu nestrādā. Cik paskatījos, pārsvarā templeitu sistēmu pamatā ir freimworks, kura pamatā ir MVC paterns. Pameiģināšu, kad būšu vecs ar izsīkušu entuziasmu darīt pats vai dzīve piespiedīs. :D Jaukas brīvdienas visiem! ;) Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 26, 2016 Report Share Posted February 26, 2016 > Vispār jau šim ir risinājums (kas kā reiz forsē programmētājus pievērst uzmanību, kas notiek ar datiem (ne kaut kur "maģiski" kādā pluginfailā) Tas Taint izskatās ļoti, ļoti edgy. Uzticēties, ka sistēma automātiski atradīs problēmas (this will 100% fail at some point) un tad uzticēties, ka kāds šos warningus ņems vērā (kāds piemirsīs, kaut vai netīšām)? Mēs šeit tomēr runājam par security. > No performances viedokļa (un ja dati/apstākļi ļauj t.i. nav būtisks oriģināls), tad "eskeipotus" glabāt ir krietni labāk nekā ziljons reizes transformēt pie izvades (tāpat ar visādiem nl2br() utt). Datus ir jāglabā as-is, nesapistus. Ja ir nepieciešams optimizēt, izmanto cache. Quote Link to comment Share on other sites More sharing options...
Blitz Posted February 26, 2016 Report Share Posted February 26, 2016 Cik paskatījos, pārsvarā templeitu sistēmu pamatā ir freimworks, kura pamatā ir MVC paterns. Nē, no MVC tas ir V, un tikai Quote Link to comment Share on other sites More sharing options...
qwerty Posted February 26, 2016 Report Share Posted February 26, 2016 Klau, kas notiek ar BB codes? Vēl eksistē vai nomiruši dabīgā nāvē?Dažkārt taču ir vajadzība lapas administratoram ievadīt datus caur wsyg editoru - principā raw formātā, pilnībā customizējamus. Tas bieži raksturīgs, piemēram, mazām uzņēmumu mājaslapām, kas grib datus par sevi reizi pāris mēnešu laikā atjaunot bez programmētāju līdzdalības. Mēs protams te esam serious programmers un tādas nieka lapiņas netaisam, bet ja tomēr tāda vajadzība rodas? Quote Link to comment Share on other sites More sharing options...
Blitz Posted February 26, 2016 Report Share Posted February 26, 2016 (edited) BB codes jau kautkāds markup valodas paveids vien ir, gan jau šim pašam forumam kautkas tāds tiek izmantots. Dzīvaki par dzīvu, kāmēr vien vajadzēs customizēt tekstu. Edited February 26, 2016 by Blitz Quote Link to comment Share on other sites More sharing options...
F3llony Posted February 26, 2016 Report Share Posted February 26, 2016 No performances viedokļa (un ja dati/apstākļi ļauj t.i. nav būtisks oriģināls), tad "eskeipotus" glabāt ir krietni labāk nekā ziljons reizes transformēt pie izvades (tāpat ar visādiem nl2br() utt). Nu tas arī gluži nav arguments. Varbūt tad labāk kešot pašu uzrenderēto view, vai tas ir html vai jebkas cits. Taču no otras puses, man ir kaudzīte ar klonnām (*_proc un *_raw). Ja nu mainās algoritms kā no _raw nonāk līdz _proc. Citi iemesli gan - piemēram, tā pati eskeipošana on input jo dati tiek ekspozēti vēl pārdesmit dažādām sistēmām, no tām kaudzīte vendor ones, pār kurām nav nekādas kontroles praktiski. Quote Link to comment Share on other sites More sharing options...
Roze Posted February 26, 2016 Report Share Posted February 26, 2016 Tas Taint izskatās ļoti, ļoti edgy. Uzticēties, ka sistēma automātiski atradīs problēmas (this will 100% fail at some point) un tad uzticēties, ka kāds šos warningus ņems vērā (kāds piemirsīs, kaut vai netīšām)? Mēs šeit tomēr runājam par security. Ko nozīmē "edgy" šajā gadījumā? (īsti nesaprotu arī kā konkrēto vārdu kaut kā attiecināt uz šo diskusiju) Taint principā ir Zend engines hooks, kas pasaka vai ar mainīgo ir veikta kāda apstrāde (untaints), ko varētu attiecināt uz "eskeipošanu", ko un kā programmētājs ir darījis ir cits jautājums. Ja "mēs šeit runājam" par "security", tad ir diezgan jocīgi (vai pat amizanti) piesaukt kaut kādus third-party template risinājumus, kuri lielākoties tiek pljek-snjek ievilkti ar visādiem package managariem on-the-fly un noteikti lielākais vairākums pat faktiski neskatās, kas konkrētajā kodā notiek paļaujoties uz tā autoru zināšanām/godaprātu vai kaut kādas publikas pozitīvu novērtējumu utt.. Datus ir jāglabā as-is, nesapistus. Ja ir nepieciešams optimizēt, izmanto cache. Cache menedžments / invalidācija utt ar aizņem resursus (reizēm pat lielākus) .. Datus pa lielam mēdz glabāt "normalizētus" .. Vēl, piebilde - lielie FW pirms vispār nonāk līdz templeitam, ir veikuši tik daudz funkciju izsaukumus, ka eskeipošanas īpatsvars jau kļūst niecīgs. Otrkārt, dažādi cache slāņi šo jautājumu jau var risināt citādos veidos un atlikušais dinamiski renderētais outputs samazina eskeipošanas slodzes īpatsvaru. Protams, labāk ir tad, ja tiek ietaupīts arī tas, bet jāņem vērā balanss. Protams, teksta apstrāde 99% gadījumos būs pilnīgi nebūtiska, jo kverijs tieši virs tā būs patērējis 99% no visas lapas ielādes laika, attiecīgi investēt enerģiju tās optimizēšanā nebūs visai produktīva, Šeit domāju tīri sintētisku salīdzinājumu.. jo personīgi nedaudz nepatīk programmētāju atrunas par to "ka, tas jau neko neaizņem" un tad ir 1000 opkoda rindiņas "ar to neko" un galā cpu ir nodedzināts un renderēšanas laiks ir so-so.. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted February 26, 2016 Report Share Posted February 26, 2016 man ir kaudzīte ar klonnām (*_proc un *_raw). Ja nu mainās algoritms kā no _raw nonāk līdz _proc. ... I can't even... Quote Link to comment Share on other sites More sharing options...
F3llony Posted February 27, 2016 Report Share Posted February 27, 2016 ... I can't even... You can't even what? Quote Link to comment Share on other sites More sharing options...
codez Posted February 27, 2016 Report Share Posted February 27, 2016 Man sāk šķist, ka tikai Kavacky un daGrevim šeit piemīt veselais saprāts un sajēga no developmenta. Un šeit es nerunāju par atsevišķām niansēm, bet par visu bildi kopumā. Quote Link to comment Share on other sites More sharing options...
Blitz Posted February 27, 2016 Report Share Posted February 27, 2016 Nezināju ka viņi arī raksta scalā... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.