Diskuze: API v PHP 7 a novodobá authentication?

PHP PHP API v PHP 7 a novodobá authentication? American English version English version

Avatar
buri
Člen
Avatar
buri:

Ahojte,

Riešim jeden nový webový projekt (v rámci podnikania), frontend (SPA) bude písaný v Angulari a API zrejme v PHP 7 aj keď premýšľam nad Node.js a viac serverov pod load balancerom ale Node.JS je single-thread a neviem či to je vhodné pri väčších návaloch.

Otázka 1:
Myslíte si že PHP 7 už je (alebo bude o pár mesiacov) pripravený na produkčné nasadenie?
Totiž chystám sa využiť hlavne Type Hints a pod. na optimalizovanie výkonu a pod.

Otázka 2:
Ja som tvoj príliš paranoidný tvor. A preto premýšlam nad tým, ako zmeniť súčasný trend v authentifikácií na niečo bezpečnejšie. Viete o nejakých konceptoch? Existujú vôbec? Myslím to typu: uživateľ má user/pass ale predtým ako sa to pošle na môj server, sa z toho vygeneruje akýsi hash ešte v browsery alebo niečo podobné ktorý viem porovnať s akýmsi hashom na mojom servery?

Skrátka by som bol rád keby som minimalizoval každý jeden aspekt - čo v prípade napr. vydumpovania DB nepovolenou osobou. Viem že tu máme pomalé šifry ako bcrypt a pod. To je super, ale ja by som bol rád keby to heslo vôbec nepoznám a vôbec by sa nedostávalo v otvorenej podobe (aj keď skrz TLS) na môj server.

Vďaka. :)

Editováno 19. března 16:09
Odpovědět 19. března 16:08
Prvý dojem klame!
Avatar
hitzoR
Člen
Avatar
Odpovídá na buri
hitzoR:

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í. :D

 
Nahoru Odpovědět 19. března 22:54
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

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.

 
Nahoru Odpovědět  -5 19. března 23:10
Avatar
buri
Člen
Avatar
Odpovídá na hitzoR
buri:

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. :D 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.

Nahoru Odpovědět 19. března 23:12
Prvý dojem klame!
Avatar
buri
Člen
Avatar
Odpovídá na Marian Benčat
buri:

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. ;)

Nahoru Odpovědět 19. března 23:18
Prvý dojem klame!
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na buri
Marek Z.:

K 2. bodu je https dostačující řešení.

Nahoru Odpovědět  +1 19. března 23:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
buri
Člen
Avatar
Odpovídá na Marian Benčat
buri:

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ť. :)

Nahoru Odpovědět 19. března 23:25
Prvý dojem klame!
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na buri
Marian Benčat:

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.

 
Nahoru Odpovědět  -2 19. března 23:27
Avatar
buri
Člen
Avatar
Odpovídá na Marek Z.
buri:

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?

Nahoru Odpovědět 19. března 23:28
Prvý dojem klame!
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na buri
Marian Benčat:

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)

 
Nahoru Odpovědět  -1 19. března 23:29
Avatar
buri
Člen
Avatar
Odpovídá na Marian Benčat
buri:

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. :)

Nahoru Odpovědět 19. března 23:37
Prvý dojem klame!
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na buri
Marian Benčat:

Ok tedy. tak jen odrazkovite, par prikladu:

  1. ano je rychlejsi, uz neni 20x-100x pomalejsi nez konkurence, ale 12x-57x
  2. threading je porad jeden velkej neuveritelnej pruser
  3. memory management je primo desivej - doporucuji si zkusit seradit par set milionu cisel nejakym slozitejsim algoritmem a jsi na 2gb ram
  4. porad je silne schizofrenni a nevi, jestli je to O jazyk, OOP jazyk, nebo funcionalni jazyk
  5. porad a na vzdy to bude jen scriptovaci jazyk, z toho vyplyva ze nikdy nebude samostatnej, vzdy budes potrebovat toho crona, céčko, nodejs
  6. ac chce umlcet komunitu, porad jde o dynamicky jazyk, ktery umoznuje praasarny, kterymi se strelis do nohy

a další miliarda veci

 
Nahoru Odpovědět 19. března 23:47
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Marian Benčat
BlugW:

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?

Editováno 19. března 23:54
Nahoru Odpovědět  +1 19. března 23:54
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na BlugW
Marian Benčat:

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

Editováno 20. března 0:00
 
Nahoru Odpovědět 19. března 23:58
Avatar
buri
Člen
Avatar
buri:

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.

Nahoru Odpovědět 23. března 18:08
Prvý dojem klame!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.