Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Stavba webové aplikace a nutnost API

David Musil
verified
rating uzivatele
(68 hodnocení)
7. 7. 2016 14:32:34
Ahoj,
jelikoz se snazim stale zlepsovat a neprznit webovky jen svymi custom kody ;-), rad bych se Vas zeptal po case na jednu vec.
Nedavno jsem se zucastnil jedne schuzky pri planovani projektu ve vetsi vyvojarske firme. Muj dojem je, ze tomu rozumi a jsou to odbornici, takze jejich nazory beru zatim vcelku vazne. Slo o vyvoj webove aplikace, kde byl klient seznamen s jakymsi postupem stavby webove aplikace a s urcitymi kroky.
Vedouci vyvojar rekl, ze je hrozne nebezpecne davat do webove aplikace primo komunikaci s databazi - tedy soubory, ktere obsahuji pripojeni na DB, apod. Ze pak staci, aby se nekdo dostal neopravnene na FTP a hned ze ma celou databazi, protoze tam snadno najde patricne pristupy za par vterin.
Vse by se pry melo resit az v prislusnem API aplikace a to nejlepe pres https komunikaci. Takze by aplikace mela s API pouze komunikovat, napriklad pomoci posilani JSON dat.
Delate to take tak? Nebo je mozne, ze se lisi postup u toho, kdyz delam maly prezentacni web spolecnosti a kdyz delam slozitejsi webovou aplikaci.
Pro me to zni vcelku logicky. Jen si pak rikam, jestli aplikace neni kvuli API o dost vice vytizena. Predstava, ze mam v DB i logickou strukturu webu a pri kazdem nacteni stranky saham do API a to same pri nacteni kazdeho textu me trosku desi.
Nebo se tohle treba deli na dve databaze? V jedne je struktura webu, seznam kategorii, texty a az API komunikuje s databazi, kde jsou data uzivatelu, udaje o fakturach, apod.?
Kdo mi da k tomuhle blizsi informace, budu rad :)
7. 7. 2016 14:32:34
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208836
Spis si myslim, ze z klienta chtel jen vytriskat dalsi prachy za vyvoj API ... Kdyby napriklad Facebook stal na takovem Script <-> API principu, tak to opravdu neustoji :D
Zabezpecit databazi dnes zvladne kazdy mamlas (prepared statements snad neni tak tezke pouzivat, kor v "takove velke spolecnosti") a svihnout na FTP nejaky fakt megalomansky heslo, ktere proste nikdo necrackne (nebo tam to FTP nemit vubec) to proste jisti :)
Obcas se sam setkavam s tim, ze nekteri ti vyvojari vymysli totalni picoviny, jen aby predvedli neco noveho a ukazali se, jak jsou znali a uzasni .... a ve vysledku je z toho vlastne totalni hovadina
7. 7. 2016 14:38:53
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208835
Tom
verified
rating uzivatele
(7 hodnocení)
7. 7. 2016 14:43:31
Ahoj, řekl bych, že to trošku zjednodušený náhled. Samozřejmě je takový soubor nebezpečný, ale proto se dělá ochrana jinak. Například v tomto případě stačí pro uživatele, kterého aplikace používá, zakázat připojení odjinud než z localhostu. Navíc uživatel pod kterým běží aplikace může mít daleko větší omezení,a le to už je na konkrétním případě.
Jinak se na to můžeš podívat z logického pohledu: samotné API musí přece taky poskytovat nějaká aplikace a ta má v sobě uložený stejný soubor, jako ten, na jehož nebezpečnost upozorňoval :)
PS: mít v aplikaci rovnou api je super a v budoucnu ti může spoustu usnadnit. Je to ale téměř vždy za cenu dražšího vývoje, tak je otázkou, zda to má smysl. + předpokldám, že se bavíme o klasické relační db, ne o těch, které mají api přístup přímo ve své konstrukci
7. 7. 2016 14:43:31
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208834
hm
verified
rating uzivatele
(20 hodnocení)
7. 7. 2016 14:45:49
nepouzivam vubec FTP, na produkci stahuji vse z SVN (jo, opravdu nepouzivam git, porad se vsichni divi :) ), pokud jde o dulezity projekt s velkou citlivosti, tak mame na serveru deaktivovane i SSH, aktualizuje se se pres KVM ktere se zapina jen v dobe aktualizace. Kdyz uz bych delal neco na tento styl, nepouzival bych urcite HTTPS, abych pak kazdy jednotlivy pozadavek furt musel otevirat nova spojeni jak debil, pouzil bych socketovy spojeni pres SSL, protoze tam otevres spojeni, prokomunikujes si toho kolik chces a pak ho teprve zaviras, coz je asi tak milionkrat rychlejsi. Samozrejme phpmyadmin ani jiny podobny veci co ti daj komplet pristup do databaze na produkcni server nepatri...
7. 7. 2016 14:45:49
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208833
tomve
verified
rating uzivatele
(22 hodnocení)
7. 7. 2016 14:47:52
:-d :-d
7. 7. 2016 14:47:52
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208832
hm
verified
rating uzivatele
(20 hodnocení)
7. 7. 2016 14:52:29
Jinak abych programatorum co to rikali jen nekrivdil, tak mam ve svym frameworku navrh udelanej tak, aby se tohle dalo realizovat, v podstate s tim od zacatku pocitam... Ale ne tak uplne kvuli "bezpecnosti" ale proto, ze mit rdy naky API se muze vzdycky hodit a u extreni databaze muze mit i datovej smysl :) S tou bezpecnosti tak uplne nesouhlasim...
7. 7. 2016 14:52:29
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208831
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
7. 7. 2016 14:52:50
Asi záleží, co to je za aplikaci. Pokud se má připojovat k externí databázi, tak API dává větší smysl - nejen kvůli bezpečnosti, ale třeba i kvůli výkonu (latence je u databáze znát, ale API to může zabalit do jednoho požadavku).
U interní aplikace se ale stejně údaje k databázi neuvádí přímo ve zdrojácích. Buď jsou v nějakém konfiguračním souboru mimo (zkrátka se necommitují do repozitáře) a nebo ještě lépe jsou definované v ENV. Kromě toho, že to je bezpečnější to rovnou řeší i různé údaje pro testovací prostředí a podobně.
Doporučil bych nevymýšlet kolo a podívat se na Symfony a podobné. Tyhle věci jsou řešené už v základu, takže to vývojáře od začátku navádí správným směrem a nemusí se tím zaobírat.
7. 7. 2016 14:52:50
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208830
TomasX
verified
rating uzivatele
(4 hodnocení)
7. 7. 2016 14:55:25
jedná se regulérní postoj u větších aplikací a osobně to ani jinak nedělám a nedoporučuji to dělat jinak, i v ČR to je podle googlu běžná praxe, viz třeba rok starý zápisek.
V PHP člověk má dvě možnosti, buď založí více db účtů, s rozdílnými právy na zápis/čtení a každá část aplikace bude mít svůj přístup, backend se širšími právy bude třeba schovaný pouze ve vnitřní síti. Nebo si na práci s doménovými daty udělá API, což má i druhou výhodu, návrh aplikace bývá flexibilnější, lépe se škáluje a profiluje výkon, nemluvě o možnosti transparentního cachování.
V případě přístupů do databáze či do API je ale vždy naprosto nevhodné je mít staticky někde v configuraci, fuj, existují enterprise řešení typu Kerberos nebo si stačí udělat vlastní primitivní systém na získávání časově omezených přístupů alias access tokenů.
Vždy je dobré dodržovat zásadu, že přístup do zdrojových kódů nesmí ohrozit bezpečnost produkční aplikace, na všechny úpravy dělat code review a přímo v aplikaci (ani na ftp) nemít žádné volně čitelné údaje pro přístup k ostatním systémům. Nemluvě o nemožnosti na takovém ftp nic neautorizovaně upravit, vlastně ftp je přežitek už deset let.
Pokud někdo máte o téma větší zájem, rád tady poradím jaké technologie použít a jak přistupovat k tvorbě takové aplikace.
---------- Příspěvek doplněn 07.07.2016 v 14:59 ----------
pokud je aplikace z více částí (frontend, backend), případná kompromitace nesmí ohrozit celý systém, ale pouze tu jednu aplikaci, nikdy totiž nemůžete vyloučit kdo se vám kam dostane. U webu za pár tisíc je lepší se spolehnout na možnosti frameworku a nevymýšlet komplikovaný systém jak radí souki.
7. 7. 2016 14:55:25
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208829
tomve
verified
rating uzivatele
(22 hodnocení)
7. 7. 2016 15:13:08
Pokud někdo řeší údaje pro db s odůvodněním, že se někdo může dostat k ftp, tak absolutně neví, co říká.
7. 7. 2016 15:13:08
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208828
Napsal Tomve;1307000
Pokud někdo řeší údaje pro db s odůvodněním, že se někdo může dostat k ftp, tak absolutně neví, co říká.
Udaje k databazi jsou vetsinou u PHP aplikace v nejakem configu ... kdyz se dostane nekdo na FTP, tak si ten config logicky muze i precist, ne ? :D
EDIT:
Pokud ten config tedy neni ve slozce, kam ma pristup webuser ale ftpuser ne :)
EDIT numero dos:
Coz ale vlastne by byla kravina, protoze by se k tomu configu stejne dostal tak, ze si jej vypisu upravou nejakeho skriptu a spusti to pres web ... :D
7. 7. 2016 15:35:01
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208827
Pokud se někdo dostane k ftp resp. na server obecně, tak už nepomůže ani svěcená voda. Kvůli bezpečnosti mi to přijde zbytečné. Ostatní API taky musí někde běžet a v konečném důsledku někde musí být skript, který komunikuje s databází. Takže k němu se útočník v případě špatného zabezpečení dostane taky.
7. 7. 2016 15:40:16
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208826
tomve
verified
rating uzivatele
(22 hodnocení)
7. 7. 2016 15:40:51
Napsal jbezdicek;1307010
Udaje k databazi jsou vetsinou u PHP aplikace v nejakem configu ... kdyz se dostane nekdo na FTP, tak si ten config logicky muze i precist, ne ? :D
EDIT:
Pokud ten config tedy neni ve slozce, kam ma pristup webuser ale ftpuser ne :)
Nebo si tam nahraje svůj php soubor, přip. edituje a může si tam kempit jak dlouho chce (nemůžu najít zdroj, ale někdo našel díru na FB, což umožňovala upload souborů a zjistil, že někdo tam zakempil soubor na sběr zaměstnaneckých dat - loginy atd :D).
Od takových expertů pryč.
7. 7. 2016 15:40:51
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208825
hm
verified
rating uzivatele
(20 hodnocení)
7. 7. 2016 15:41:03
On je ten hlavni prvotni problem ze se dneska jeste pouziva FTP k nahravani a uprave aplikace, coz je proste davno za zenitem :) Osobne v tomhle smysl vidim, jen ne proste u mensich aplikaci, TomasX asi vi o cem mluvi, ale sam rika ze je to praxe u vetsich aplikaci, u mensich to me soobne smysl vubec nedava :)
7. 7. 2016 15:41:03
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208824
Martin
verified
rating uzivatele
(62 hodnocení)
7. 7. 2016 15:57:51
Tím API by se sice asi zvýšila bezpečnost, ale je to jen další klacek pod nohy hackera. Když už je na serveru, udělá si stejně co bude chtít, jen mu to bude trochu déle trvat. Osobně bych to viděl tak, že pokud to jsou opravdu experti, asi mají za sebou projekty, kde se to přes API dělalo, ale nebylo to primárně kvůli bezpečnosti a jsou prostě na to zvyklý.
Dělat API pouze kvůli bezpečnosti mi přijde zbytečné. A hlavně jak už psal Aleš je docela směšné řešit bezpečnost a přitom používat FTP.
7. 7. 2016 15:57:51
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208823
TomasX
verified
rating uzivatele
(4 hodnocení)
7. 7. 2016 16:30:49
ano, API není primárně kvůli bezpečnosti, má řadu dalších výhod, bezpečnost se dá zajistit i jinak. Je neskutečný rozdíl pokud na aplikaci dělá jeden, dva programátoři a běží na jednom serveru nebo jí programuje 100 lidí a běží na desítkách serverů, pak jsou již požadavky jiné a útočník může být i jeden z těch programátorů (úmyslně i neúmyslně).
Nadnárodní korporáty mají často poměrně striktní pravidla a právě nepřímý autoditovatelný přístup do DB přes API k nim patří. Stejně tak požadavek na API může být příprava na masivní škálování aplikace nebo jen zvyk v dané firmě.
Tady se ale bavíme o projektech v měsíčních nákladech od stovek tisíc korun, žádné prezenční weby, ale tvrdé obchodní platformy typu třeba damejidlo.cz nebo uber, kde by mi takový přístup dával smysl. Stejně tak to nemá smysl u jednorázových zakázek, vyčlenění doménové vrstvy je užitečné, pokud se na dané platformě pracuje kontinuálně v různých týmech. Stejně tak to dává smysl u projektů, kde je nutné zachovat velice vysoké SLA, tj. ideálně bez výpadků, přece nenechám aby mi frontenďák sestřelil špatným dotazem celou db nebo nevypnu projekt pokud chci upgradovat nebo migrovat databázi.
7. 7. 2016 16:30:49
https://webtrh.cz/diskuse/stavba-webove-aplikace-a-nutnost-api/#reply1208822
Pro odpověď se přihlašte.
Přihlásit