/ / Môžem sa vyhnúť zobrazovaniu všetkých js klientom, ktorí nie sú prihlásení? - javascript, bezpečnosť, webové aplikácie, meteor

Môžem sa vyhnúť zobrazovaniu všetkých js klientom, ktorí nie sú prihlásení? - javascript, bezpečnosť, webové aplikácie, meteor

Pri vytváraní aplikácie Meteor je možné, aby sa klient nevygeneroval / nevygeneroval všetok vygenerovaný javascript, kým nie je používateľ overený?

Bol by som šťastnejší, keby niekto mohol vidieť moje šablóny, modely, pomocníkov atď ...

upresnenie:
Nie je to o tom, že by ste mali robiť veci pod serverom alebo robiť to správne s pub / sub.
Je to o tom, že neposielajte viac než potrebujete neovereným používateľom, nie preto, že predstavujú bezpečnostné riziko, ale jednoducho sa skrývajú čo najviac od sveta.

odpovede:

0 pre odpoveď č. 1

Používam router balíček na dosiahnutie tohto cieľa.

Vo vašom hlavnom html súbore pridáte {{renderPage}} kde by ste chceli router vykresliť šablóny. Potom, keď definujete svoje trasy, môžete určiť, ktoré šablóny / šablóny sa zobrazia na základe cesty a akýchkoľvek iných premenných.

Ak ste chceli napríklad zobraziť prihlasovaciu obrazovku bez vykresľovania chránených šablón, môžete urobiť nasledovné:

Meteor.Router.page();
Meteor.Router.add({
"/": function() {
if (Meteor.userId()) {
return "protectedContentTemplate";
}
else {
return "userUnauthorizedTemplate";
}
},
});

Samozrejme, vždy by ste mali mať svoje zbierky uzamknuté Meteor.publish() a Collection.allow() aby neoprávnené používatelia nemohli získať prístup k informáciám, ktoré by nemali mať prístup.


0 pre odpoveď č. 2

Som si istý, že v súčasnosti nie je možné selektívne načítať skripty v aplikácii Meteor. Jedinou výnimkou je, že môžete chrániť ľubovoľný citlivý kód vložením do /server (ktorý nie je odoslaný klientovi) a zamknúť dáta ako @Patrick Coffey navrhol (tiež s využitím Meteor methods). Ak to urobíte, nemusíte odovzdať svojmu modelu úplnú modelovú schému, autentifikačné pravidlá alebo citlivé algoritmy klientovi a môžete dôsledne kontrolovať, ktoré záznamy a dokonca aj záznamy záznamov sú pre klienta viditeľné. môžete si vybrať úroveň pohodlia / výkonnosti a bezpečnosť, ktorú chcete, podľa toho, ako otvorene vytvárate rozhranie API.

Ak sú šablóny a pomocníci citlivé, budete musieť počkať, kým sa neuvedie vykresľovanie na strane servera (je to na pláne) alebo si pripravte vlastné riešenie bez Meteorupomôcť, ale myslím, že môže existovať dôvod, aby sme sa na túto otázku trošku pozreli. Zdá sa, že váš záujem je, že autentifikovaní používatelia budú nejako dôveryhodnejší ako neoverení používatelia, ale vo väčšine situácií (dokonca aj v rámci spoločnosti) existuje pravdepodobnosť, že sú používatelia, ktorí sú tiež nedôveryhodní - alebo používatelia, ktorých účty dostanete hacknutý - a títo ľudia budú mať vždy prístup k všetkým, čo pošlete do prehliadača. Takže z tohto pohľadu má zmysel zabezpečiť, aby ste nezadali dôležité tajomstvá do šablón ani na kód na strane klienta bez ohľadu na to, pre väčšinu aplikácií však šablóny a pomocníci nebudú citlivé a ak nastavíte svoj server dobre, hackované šablóny nebudú môcť pristupovať k všetkým, čo bežné šablóny nemôžu.