Autor Zpráva
JardaB
Profil
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
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
A je tedy nějaké elegantní řešení jak zjistit zda nebylo něco pozměněno?
Keeehi
Profil
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
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
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
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 *
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
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
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
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
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
Ano díky...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0