Diskuze: API v PHP 7 a novodobá authentication?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
K té druhé otázce - už je to minimálně 5 let, co jsem v nějakém návodu četl, že ideální je heslo při odesílání z formuláře zašifrovat JavaScriptem a poslat ho už zašifrované. Ale s SSL/TLS mi to přijde možná trochu zbytečné, ale pokud si paranoidní, tak proč ne, aspoň budeš mít klidné spaní.
nebudu se vyjadrovat radsi k tomu, ze nekdo chce v dnesni dobe pouzivat php nebo jeste desivejsi Nodejs, k tve druhe otazce, mohly by te zajimat jednorazova hesla.
Ale ako zašifrovať? Hash ako sha1, sha512 a pod. neprichádzajú k úvahu, tie algoritmy sú príliš rýchle a nie sú určené ku "šifrovaniu" hesiel. Na druhú stranu BCrypt na to použiť nemôžem pretože potrebujem vedieť heslo v plaintext-e (pre overenie). Môžem keď tak skombinovať obe dokopy. Budem dostávať hash namiesto hesla v SHA512 napr., z toho si spravím bcrypt a pod. Ale to mi príde dosť chabé a amatérske riešenie. Asymetrická šifra tiež nepripadá k úvahu, to je tiež niečo ako by som len vedel plaintext heslo a aj tak toto už zabezpečuje HTTPS.
Marian: Tak mi odporúčaj niečo alebo svoje tvrdenie vysvetli. PHP je najrozšírenejšia platforma a jeho výhoda je práve to že je pod neustálym drobnohľadom takže má aj dobrú podporu. PHP7 uvádzam práve kvôli tomu, že konečne podporuje JIT kompiláciu. Je jednoducho nasaditeľné a pod. Je ale pravda že ja budem budovať sieť vlastných VPSiek/serverov takže neobmedzujem sa na platformu. Premýšľal som aj nad Javou ale na tú mám ešte stále málo skúseností na to, aby som na nej postavil väčší systém. Narozdiel od toho PHP používam od veky vekov.
Jednorazová hesla - myslíš OTP? Áno to tam bude ako doplnková authentifikácia ale nemôžem k tomu nútiť bežného užívateľa. Ale ako možnosť to tam určite bude.
Ešte k tomu Node.JS - Aký je s tým problém? Je tam rozdiel v architektúre oproti PHP. Webový server na základe requestu spúšťa thread s PHP ktorý je samostatný takže vie spúštať aj I/O blocking operácie (db query, práca so súbormi, ...). Narozdiel od toho, Node.JS je single-thread kde všetko čo neblokuje, beží v jednom vlákne a všetko blokujúce knižnica libuv odsúva na iný thread a po čase sa to callback-om vráti späť. Je to omnoho rýchlejšie pri malej záťaži, ale neviem či to je dobrý nápad robiť v Node.JS API pre väčší projekt. Ešte jedna nevýhoda Node.js je, že práve kvôli tomu že je single-thread, stačí chybyčka a padne celý program namiesto jedného threadu u webového servera. To sa ale load balancerom a auto-resetom dá zvládnuť.
pokud děláš v PHP, mám 90% šanci, že svoji argumentací nic nezměním a dostanu tu pouze mínuska od PHPkářů, co si nevidí ani na špičku nosu.. a to přesto, že moje argumenty by byly věcné a není šance, jak by se proti nim php mohlo bránit, Takže to jen shrnu.. PHP je špatné ve všech ohledech, kromě jednoho jediného,... je neskutečné pomalé, je neskutečně upatlané, neintuitivní, tebou zmíněné type hints problémy vůbec neřeší, jen jimi chtěli zavřít hubu komunitě.
Defakto není jedna jediná věc, kterou by PHP mohlo čemukoliv konkurovat, jediný důvod proč stále žije je jeho jediná konkurenční výhoda...
Strašně dobře se alokuji zdroje, protože v něm umí každý a je tam víceméně jedno, jestli v něm patlá. a ona, myslím jednorázová hesla..
Jinak.. šifrovat cokoliv na klientovi je k ničemu, zbytečná redundance, měj zacryptěna hesla v DB, ideálně ještě šifrovaná pomocí HW klíče.. nejlepší je ale samozřejmě nemít uložená hesla nikde.. používat OTP, nebo nějaké SSO autority.
Marek: Áno ja chápem že je a ja tomu aj verím. Ja som si len hovoril či by sa nenašlo ešte o level lepšie riešenie také, aby som sa aj ja ako developer k heslám vôbec nedostal (a nie len skrz DB napr. cez bcrypt) ani keby som si odchytával údaje pri login-e. Preto som premýšlal nad niečím čo by heslo dostalo do nečitateľného tvaru ešte v browseri daného používateľa a až potom by sa to dostalo ku mne. Čo tak napr. Sha512 u klienta a k tomu bcrypt na servery?
k Node.JS... někdo vzal nejhorší jazyk co byl kdy vytvořený a dal ho na server.. musim říkat něco víc? už ani nebudu zmiňovat balíčkovací systém plně držící se pravidla 1->10 000 (potřebuju 1 balíček a ten si postahuje 10 000 dalších).
Node.JS není rychlý ani náhodou, je propustný, to ale plyne z toho, že umí kulový... není po cestě žádnej pipeline... (mimochodem co se týče propustnosti je Node.JS pořád tragédie oproti Netty / ASP NET)
S pomalosťou pred PHP 7 súhlasím, PHP 7 som ešte riadne netestoval ale podľa článkov je to o dosť lepšie ale okej. Ja patrím do tých 10% pretože síce robím v PHP ale rád sa učím nové veci, tak mi daj príklad.
Ja som síce natívny PHPčkar ale napr. ja mám najradšej na Jave práve to, že sa tam nedá robiť až taký bordel ako v PHP (v dátových typoch). Mám rád OOP, mám rád keď si viem ustrážiť, čo má aký dátový typ a čo koľko zaberá v pamäti. Ale chcelo by to niečo čo je vhodné pre unix platformu a nie windows.
Skúšal si PHP7? Je rozdiel keď robí niekto v PHP bordel a niekto, kto vie čo robí a ako v PHP7 definuje už čo má byť aký dátový typ hlavne keď to prechádza JIT kompiláciou.
Tiež by som rád skočil na Javu len tak ale nedovolím si to s tými skúsenosťami čo z nej ešte mám. Ale ak má niekto dobrý API lightweight framework pre javu ktorý je DOBRE zdokumentovaný, tak sem s ním.
Ok tedy. tak jen odrazkovite, par prikladu:
a další miliarda veci
Můžeš prostě napsat co má použit a ne, jen se okolo toho motat.
Taky mě např. zajímá co je lepší, rychlejší, suprovější, bezpečnější než php
Jediné co mě napadlo je ASP, je to tak?
Netty, ASP, Spring MVC,.. java ee je uz moc zbytecne pretechnizovana , chtel hlavne linux a uplne novackovi bych prozatim .NET core nedoporucil, takze zustava asi spring
No uvidíme, skúsim to PHP 7, otestujem to, skúsim si poskúšať aj Node.js pod nejakou záťažou na reálnom API a skúsim aj Spring (Java) a uvidíme.
Len k tej otázke č. 2: Spomínal som, frontend mám SPA (Angular APP) a backend skrz API. A rád by som aspoň čiastočne zabránil tomu, aby som poznal heslo plain-text (pri overovaní napr.).. Myslíte že je blbý nápad napr. že keď sa použivateľ bude prihlasovať, heslo sa zahashuje do SHA-512 a takto sa pošle ako password skrz ajax a až tento hash porovnávam skrz bcrypt a pod.? Myslíte že tým nedegradujem bezpečnosť? Asi nie ale len sa pýtam.
Zobrazeno 15 zpráv z 15.