Autor Zpráva
slon_cz
Profil
Dobrý den, řeším takový problém.

Potřeboval bych, aby php soubor šel načíst jen javascripte. Momentálně to řeším tak, že aby se zobrazit obsah php souboru musí se do něj kouknout přes POST požadavatek, pokud si ale chytřejší člověk podívá do zdrojového kodu, zjisti že je potřeba POST požadavek a rázem se na obsah souboru dostane taktéž :/
Tomášeek
Profil
slon_cz:
K čemu by to mělo být dobré? Tuším snahu o ochranu proti něčemu (asi černé magii), ale jdeš na to pravděpodobně špatně.
juriad_
Profil *
Nemáš prakticky šanci to ochránit. Vždyť může uživatel na kartě Síť ve vývojářských nástrojích zkopírovat celý příkaz, který soubor stáhne stejně (k nerozeznání od toho) jako to udělal prohlížeč pomocí AJAXu.
Můžeš to samozřejmě zkomplikovat, ale pak také riskuješ, že se ti to snadněji pokazí.
slon_cz
Profil
v tom souboru generuje cislo, ktere se ma vytocit na rulete. ruleta se roztaci jednou za 30 sekund, tedy od posledniho toceni + 30 sekund a pokud uz uplynule danych 30 sekund tak se vygeneruje nove cislo a ukaze se v tom php souboru, pokud jeste takovy cas neuplynul, ukaze se stare cislo. Bohuzel me nenapada, jak to tedy ochranit pred tim, aby lide na webu videli dana cisla drive, nez se roztoci ruleta, protoze jakmile by vedeli cislo predem, muzou podle toho uzpůsobit sazky.
Keeehi
Profil
slon_cz:
Vyřešit to jak si myslíš nejde. Jediné řešení, je přepsat logiku -> nové číslo nesmí být veřejně dostupné dříve, než bude vytočeno.
slon_cz
Profil
to právě nelze změnit logiku, protože ten soubor ukazuje jaké se má číslo vytočit, tudíž při vytočení se musí zároveň i vygenerovat nové číslo a to uložit do db.
Tomášeek
Profil
slon_cz:
to právě nelze změnit logiku
Obávám se, že to je jediná možnost. Nevidím důvod generovat číslo, které má padnout, dříve, než jej potřebuješ zobrazit = než se ruleta dotočí. Pokud je to číslo k dispozici dříve (kdekoliv volně přístupné), musíš počítat s tím, že si jej může kdokoliv kdykoliv zobrazit.

Na jaké adrese je ta ruleta? Kdybych si potřeboval trochu přivydělat :-)
slon_cz
Profil
ono to s novým číslem současně generuje i čas, kdy má být ruleta znova roztočena a potom pokud sedí čas roztočení s aktuálním časem, tak se ruleta roztočí a vytočí zvolené číslo.
pcmanik
Profil
slon_cz:
Možno mi niečo uniká, ale keď generuješ čas kedy sa má ruleta roztočiť, tak načo zároveň generuješ aj číslo? Nestačí to číslo vygenerovať vtedy keď ho treba?
slon_cz
Profil
ano, to mohu, ale stále to nevyřeší problém, že pokud se ještě nemá generovat nové číslo, tak musím ukazovat to staré, protože ne všem se ve stejnou setinu vteřiny ruleta roztočí, takže třeba 10 sekund po roztočení musí ten script ukazoval staré číslo, aby se všem na webu vytočilo stejné číslo, takže stejně ten soubor ukazuje to číslo.
Keeehi
Profil
slon_cz:
Ano, ale ukazuje staré. To, na které byly sázky už uzavřeny.
midlan
Profil
slon_cz:
předpokládám, že momentálně to máš udělané tak, že uživatel uzavře sázku a okamžitě vidí výsledek (po okamžitém dotazu na server). Ty to ale musíš udělat tak, že uživatel bude uzavírat sázku až na příští roztočení. Algoritmus bude pak přibližně následující:

1. uzavření sázky
2. dotaz na server, po kolika sekundách od teď následuje další roztočení, toto číslo (počet sekund) si uložíme např. do proměnné n
..... časová prodleva n sekund ......
3. dotaz na vytočené číslo (tvůj stávající skript)

Nevýhoda tohoto řešení je, že uživatel bude na výsledek čekat 0-30 sekund podle toho kdy vsadil. Jestli ale soutěží i s ostatními hráči (jak jsem pochopil), je to nejpřímočařejší řešení jak zamezit podvádění.

Mimochodem mám obavy, že tohle nebude jediné slabé místo v tvé ruletě. Pokud tam půjde o reálné peníze, raději si ji nech od někoho zkontrolovat celou.
Keeehi
Profil
midlan:
Nevýhoda tohoto řešení je, že uživatel bude na výsledek čekat 0-30 sekund podle toho kdy vsadil.
Jako v reálné ruletě. Tam taky čekáš. Bude ale dobré uživateli nějak hezky vizuálně ukázat, jak dlouho zbývá do dalšího zátočení. To aby věděl, že ta stránka žije a nezemřela.

Pokud tam půjde o reálné peníze,
Nemyslím si to. Ale pokud náhodou ano, tak mám pocit, že by ses slon_cz měl zaregistrovat na nějakém úřadu, jinak ti mohou stránku odstavit.
slon_cz
Profil
zdravím,
ano, v databázi je uložené číslo, co se má vytočit, zároveň je u něj taktéž uveden čas, kdy má k roztočení dojít. ajaxem je volán script, který vypisuje kolik času (sekund zbývá do roztočení) pokud se čas rovná nule nebo je menší jak nula, dojde k roztočení rulety a následně zavolání scriptu, který vypisuje číslo, které se má vytočit. tento php script je momentálně nastaven tak, že pokud čas do roztočení je menší než 5 sekund, tak se ve scriptu číslo ukáže a jakmile je čas do roztočení menší než 0 vygeneruje se nové + se aktualizuje čas dalšího roztočení. zároveň je další php script, který přijímá sázky a ten je přijímá jen do momentu, pokud je do roztočení rulety více jak 10 sekund. Takto by to snad mělo být ošetřené, že i když ten script číslo ukáže, tak zároven už na dané číslo nelze vsadit řádnou sázku.


Ne, o reálné peníze se nejedná, jedná se o takovou mini-hru pro registrované lidi na webu :)
Joker
Profil
slon_cz:
Úplně „čistý“ postup by byl:

1. Příjem sázek
2. V nějakou chvíli se uzavřou sázky
3. Teprve teď se vygeneruje číslo
4. Číslo se ukáže sázejícím
midlan
Profil
Souhlas s Joker. Na webu můžeš mít teoreticky jinou díru a někdo si při tvém stávajícím systému mohl přečíst celou databázi čísel která v příštích hrách padnou a pak je sázet.
slon_cz
Profil
už jsem to opravil přesně na ten postup od Jokera, díky moc :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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