Autor | Zpráva | ||
---|---|---|---|
JardaB Profil |
#1 · Zasláno: 20. 12. 2017, 17:27:05
Zdravím, s JS začínám a dosti mě zajímá jak je to s bezpečností napsaneho kodu? Resp. s tím, jak snadné je ze strany uživatele nebo útočníka podstrčit např. své proměnné?
Nechystám se na nic složitého, chci mít jednoduchou hru kde na začátku definuji základní proměnné, které jsou v kodu vidět a logicky nemám zájem aby někdo podváděl právě tímto. Mám zkušenosti s PHP, kde vše běží na straně serveru, u JS na straně uživatele. |
||
Mlocik97 Profil |
#2 · Zasláno: 20. 12. 2017, 17:45:57
JardaB:
v podstate na strane klienta je možné upraviť celú stránku/celý kód na úplne neco jiného, a zo šachovej stránky spraviť piškvôrky,... ale to jen lokálne na strane clienta.... |
||
Mlocik97 Profil |
Príklad, takto vieš zmeniť absolutne všetko:
![]() Ovšem tieto úpravy nieje možné vykonávať na strane servera,... dáta posielané z klienta je možné na strane servera overovať. Ale inak v podstate akýkoľvek programovací jazyk ktorý "podstrkáva web" je na klienta sťahovaný ako HTML, CSS, JS ktoré vždy je možné meniť na strane klienta. Je jedno či použiješ PHP, .NET, node.js, Ruby či Go. |
||
JardaB Profil |
#4 · Zasláno: 20. 12. 2017, 17:58:24
A je tedy nějaké elegantní řešení jak zjistit zda nebylo něco pozměněno?
|
||
Keeehi Profil |
#5 · Zasláno: 20. 12. 2017, 19:19:10
JardaB:
„A je tedy nějaké elegantní řešení jak zjistit zda nebylo něco pozměněno?“ Jediná možnost je uživatelem zadané "vstupy"/akce neustále posílat na server, tam vyhodnotit a zpět odesílat informace, co má hra aktuálně uživateli zobrazit. |
||
JardaB Profil |
#6 · Zasláno: 20. 12. 2017, 19:42:32
Mlocik97:
> Ale inak v podstate akýkoľvek programovací jazyk ktorý "podstrkáva web" je na klienta sťahovaný ako HTML, CSS, JS ktoré vždy je možné meniť na strane klienta. > Je jedno či použiješ PHP, .NET, node.js, Ruby či Go. to ano, ale PHP kod mi nikdo ze strany uživatele nezmění, pokud se mi přímo nenabourá na server... mě nejde o to, že někdo dokáže změnit vygenerovaný HTML, ale o to, aby nešlo ovlivnit napsany kod, či předefinovat proměnné atd... |
||
Mlocik97 Profil |
#7 · Zasláno: 20. 12. 2017, 21:31:21
JardaB:
však to som psal, ovšem zmena client side kódu, môže spôsobiť že server bude príjmať iné dáta než by mal,... preto je treba kontrolovať jak som to napsal ja i Keeehi. |
||
JardaB Profil |
#8 · Zasláno: 20. 12. 2017, 22:34:19
Takže pokud jde u JS snadno zmenit či podstrčit jiny kod, funkce atd.. tak k čemu mi je, když mým účelem je odlehčit právě server a výpočty dělat na straně klienta? U PHP kod nezmení nikdo pokud se mi tam nenabourá, pouze mi může někdo podstrčit data, ty si v PHP ohlídat umím. Ale jelikož u JS jsem v začátku tak nevím, jak si ohlídat, aby mi někdo nehrabal do mého kódu a nemanipuloval s celou aplikací...
|
||
M4n Profil * |
#9 · Zasláno: 20. 12. 2017, 22:56:28
Klientské skripty jdou sledovat a ovlivnit, cokoliv co klient pošle serveru může být chybné nebo falešné.
A pokud v rámci té své hry nepočítáš Bitcoiny, je tvá starost o výpočetní prostředky serveru zbytečná a nesmyslná. |
||
JardaB Profil |
#10 · Zasláno: 20. 12. 2017, 23:13:35
Takže nemám řešit výpočetní prostředek serveru, když se hry bude v reálném čase účastnit tisíc lidí? Já hledal právě proto řešení v JS abych neměl tisíce dotazů na server, ověřování v dtb atd...
Koukám na to jak hrom, že je JS jak blok s obyčejnou tužkou a gumou, kde lze cokoliv vymazat a přepsat :D |
||
Bubák Profil |
#11 · Zasláno: 20. 12. 2017, 23:14:11
Poměrně jednoduchý příklad, e-shop, tričko za 100 Kč a vedle toho počet kusů, násobení dělá u klienta JavaScript.
Pokud dojde k odeslání objednávky, cena se musí spočítat znova na serveru a taky se musí na serveru zkontrolovat, zda počet kusů je v oboru reálných čísel, protože zmanipulovat data na straně klienta zvládne po krátkém zaškolení i cvičená opice. |
||
JardaB Profil |
#12 · Zasláno: 20. 12. 2017, 23:23:40
jj díky tak ted rozumím že JS mi nic neulehčí, ale naopak.. Takže udělám v JS kolo štěstí, které na straně klienta vytočí slevu, ale jelikož může být klient "ta opice" k... tak budu muset to samé zopakovat na straně serveru, abych zkontroloval a porovnal výsledek.. to je pekloooo :D... JS je tedy jen pro efekt na straně klienta...
Díky za diskusi.. |
||
Keeehi Profil |
#13 · Zasláno: 21. 12. 2017, 00:57:56
JardaB:
„JS je tedy jen pro efekt na straně klienta.“ Teď jsi to pojmenoval přesně. Implementace kola štěstí by měla vypadat takto. Klient pošle požadavek, že chce točit. Server vygeneruje nějaké číslo a to si zpracuje podle svých vnitřních pravidel. Také to číslo pošle javascriptu, který udělá ten efekt točení kola a zastaví to na obdrženém čísle. |
||
JardaB Profil |
#14 · Zasláno: 21. 12. 2017, 09:20:52
Ano díky...
|
||
Časová prodleva: 5 let
|
0