ugrás a tartalomhoz

Támadható-e a scriptem?

Totti 1986 · 2012. Aug. 4. (Szo), 01.54
Sziasztok!

Elnézést a túl pongyola címért, de jobbat nem tudtam kitalálni.
Van egy scriptem, ami swf-ből kapott változó értéket küldi át ajax-szal egy php-fájlnak, ami lementi.
Konkrétabban:

swf -> js
var jspoint = swf.GetVariable('swfpoint');
Itt az swf az swf objektum, a jspoint pedig megkapja az swfpoint értékét az swf objektumból.

js -> php
$.ajax({
	url: 'php/phpfajl.php?key=swfpoint&val=' + jspoint,
	success: function(data)	{
		//...
	}
});
Itt pedig átküldöm a php fájlnak.

Szóval a lényeg:
Swf-ből kapott adatot js-nek átadva, majd azt továbbküldve ajax-szal a php-nak, van-e olyan biztonsági rés, ahol bárki egy kis fejlesztői érzékkel bele tud nyúlni, és megváltoztatni mondjuk a 'jspoint' értékét?

Hallottam olyanról, hogy Firebug-gal meg lehet állítani egy script futását, hibakeresés miatt, és folytatni lehet a megszakítás után.
Ha támadható, akkor tudtok valamilyen megoldást, amivel ez kiküszöbölhető?

Előre is köszi, és remélem, érthető. Ha nem, akkor még részletezem.
 
1

Nyilván a böngészőtől érkező

tgr · 2012. Aug. 4. (Szo), 02.21
Nyilván a böngészőtől érkező adat nem lesz megbízható, teljesen mindegy, hogy flash vagy ajax vagy milyen technológia van mögötte.
2

Valahogy meg kell oldanom,

Totti 1986 · 2012. Aug. 4. (Szo), 04.02
Valahogy meg kell oldanom, hogy legalább minimálisra tudjam csökkenteni a támadás lehetőségét.
Eleve az a legnagyobb gondom, hogy nem tudom, melyik pontokon lehet belenyúlni a folyamatba. Ha ezt tudnám, talán valamit ki tudnék találni.
3

Minimum

Pepita · 2012. Aug. 4. (Szo), 05.48
Kinek mennyi a minimum - jó kérdés.
Adatot URL-ben : régen rossz, az óvodás gyerek is azt ír oda, amit akar. A POST adatok közt legyen olyan, amit előzőleg a szerveren állítasz elő és nem tudja megjósolni Júzer. Legyen még valami, amivel szerveren felismered, hogy ez ajax volt-e. Minden adatot vmi egyedi titkosítással láss el (úgy, hogy a kódoló/dekódoló függvények csak szerveren legyenek). Lényegében el is jutottam oda (mint tgr), hogy oldd meg szerveroldalról...
4

HTTP

Poetro · 2012. Aug. 4. (Szo), 08.30
A HTTP-n közlekedő adatot nagyon könnyű módosítani mind a böngészőben, mind pedig egy proxy szerveren. Ennek következtében az átküldendő adat legyen olyan, amit nem éri meg módosítani. Azaz már eleve legyen rajta védelem, például legyen kódolva valamilyen olyan eljárással, amit költséges dekódolni, illetve ne érje meg visszafejteni a kódolási algoritmust. A legjobb, ha a kódolást már a Flash-ben oldod meg, azt egy kicsit nehezebb visszafejteni, mintha JavaScriptben csinálnád.
5

AS3Crypto

janoszen · 2012. Aug. 4. (Szo), 08.43
A legjobb megoldás az AS3Crypto lib használata RSA kódolással, valamint a kulcs elrejtése obfuszkátorral. Annó a egy flashes autós játékhoz írtam ilyet az eredmány beküldésére és legjobb tudomásom szerint a mai napig nem törték meg. A próbálkozó user csak bináris szemetet lát. Memóriamódosítókkal támadható, de nagyon sol óra meló.
6

crossdomain.xml

dropout · 2012. Aug. 4. (Szo), 10.58
Még sandbox-olhatod is a flash-edet, a fenti javaslatokon túl és lesz plusz egy védelmi réteged.
7

Köszi a segítségeket! Egy

Totti 1986 · 2012. Aug. 4. (Szo), 20.39
Köszi a segítségeket!
Egy fontos dolog kimaradt, és látom, sokan arról az oldalról közelítitek meg a problémát: az swf-et én nem tudom szerkeszteni.
Csak a js résztől indulva tudok bármilyen lépést tenni az ügyben.
A get-es ajax adatküldés helyett postot használni, erre már én is rájöttem, csak egyelőre nem akartam részleteiben átirni, hanem egyben majd az egészet.
Js-ben viszont nem találtam egyelőre olyat, ami ne lenne könnyen visszafejthető, kivéve az md5-öt. De azzal meg az a baj, h elég könnyen kibogarászható, h pontosan hol teszem rá az md5-öt, tehát ha vki fogja megát és a neten csinál egy md5 kódolást egy számra, és azt irja be valahogy, máris visszajutottam az eredeti problémához.
Az lenne a legjobb megoldás, ha vhogy magát a js scriptet tudnám úgy obfuszkálni, h ne lehessen benne megtalálni, hol mennek végbe a folyamatok. Erre viszont semmi ötletem, se tapasztalatom.
8

Felejtsd el

janoszen · 2012. Aug. 4. (Szo), 21.19
JS-sel nem tudsz értelmes kódolást csinálni, pillanatok alatt visszafejthető, szal igazából kár vele foglalkozni.
9

Könnyen mondod, nekem ettől

Totti 1986 · 2012. Aug. 4. (Szo), 21.47
Könnyen mondod, nekem ettől egy elég nagy saját projektem függ, aminek a megtervezésén 2 éve dolgozom. Ez az egyik gyenge pontja és jó ideje próbálok rájönni, hogy tudnám megoldani, de valamilyen megoldást mindenképp kell találnom.
10

Akkor beszélj a teljes

Joó Ádám · 2012. Aug. 4. (Szo), 21.49
Akkor beszélj a teljes projektről, mert a megközelítésed rossz.
11

Az a baj, hogy iszonyatosan

Totti 1986 · 2012. Aug. 4. (Szo), 22.10
Az a baj, hogy iszonyatosan félek attól, hogy ellopják az ötletem. Majdnem 1 éve pihen a projekt, mert úgy esett, h elfogyott a pénzem, és félúton megállt az egész. Beláthatatlan, h mikor tudok pénzt szerezni, hogy a programozó tovább csinálja, és eljusson az oldal végre egy működő szintre.
12

Védesd le az ötleted, mint az

Karvaly84 · 2012. Aug. 4. (Szo), 22.35
Védesd le az ötleted, mint az Apple a négyzet alakú telefont! :D
14

Lehet, hogy az megoldás

Totti 1986 · 2012. Aug. 4. (Szo), 23.44
Lehet, hogy az megoldás lenne, de még arra sem tudok beruházni. Pillanatnyilag napról napra élek. De ezzel elkanyarodtunk a témától.
Annyit sztem elárulhatok (remélem), hogy a dolog lényege egy interaktiv flash játék oldal.
Megtaláltam a módját, hogy a játékokban elért pontokat kiolvassam js-sel, és így a játéknak már tétje van. Toplisták, kihívások, versenyek, egy külföldi oldal szépen felvirágozott ebből. Viszont őket kérdeztem, és természetesen a saját rendszerük működését nem osztották meg velem. :)
Plusz ők már kinőtték magukat, és eljutottak oda, hogy játékokat szponzoráljanak és a saját scriptjüket építtessék be a játékokba. Ha én is eljutnék erre a szintre, én is ezt az irányt szeretném felvenni. De addig a saját ötletemet kell kidolgoznom, és abból felvirágoztatni az oldalt.
16

Szerintem reménytelen.

tgr · 2012. Aug. 5. (V), 00.00
Szerintem reménytelen. Nehezíteni tudod a támadó dolgát (implementálsz js-ben valami szimmetrikus kulcsú titkosítást és obfuszkálod a kódot), megakadályozni nem tudod, hogy a saját gépén futó kódot tetszés szerint módosítsa.
18

Nekem bőven elég a

Totti 1986 · 2012. Aug. 5. (V), 00.35
Nekem bőven elég a nehezítés.
Annak idején egy olyan oldalt találtam, ami real-time mutatta a flash betöltődését, amit valahogy egy saját scripttel oldottak meg, és ehhez egy valós idejű saját loading bart illesztettek.
Ez akkor megtetszett, kellett volna nekem is, de amikor megláttam a kódot, hanyatt estem. Napokig gúvadt a szemem rajta, hogy mi mit csinál. Akkoriban a jquery még gyerekcipőben járt, nem azzal volt megoldva, ma asszem már van rá jquery-s megoldás.
Szóval ha el tudom érni, hogy valahogy megkeserítsem a hacker életét, az nekem már elég.
(implementálsz js-ben valami szimmetrikus kulcsú titkosítást és obfuszkálod a kódot

Ezt egy kicsit részletezd, légyszíves. :)
44

Szimmetrikus titkosítás pl.

tgr · 2012. Aug. 5. (V), 14.11
Szimmetrikus titkosítás pl. az AES: ugyanaz a kulcs megvan szerveroldalon is, meg a scriptben is, és titkosított szöveget csak a használatával lehet visszafejteni. Nyilván ha egy külső titkosító modult használsz (vagy akár egy beépített függvényt, mint az md5), akkor triviálisan visszafejthető, hogy mi történik; ha az egész titkosító kódot te írod meg, ügyelsz rá, hogy rosszul strukturált legyen, aztán átengeded egy obfuszkátoron meg egy minifikálón, akkor már nem annyira.
48

Milyen kár, hogy nincs a

Joó Ádám · 2012. Aug. 5. (V), 15.43
Milyen kár, hogy nincs a JavaScriptben goto.
20

Ha a Flash játékot nem tudod

Joó Ádám · 2012. Aug. 5. (V), 01.26
Ha a Flash játékot nem tudod módosítani, akkor tegyél le róla. Azt javaslom, hogy ameddig nem teheted meg, hogy testreszabasd a játékokat, addig a felhasználó csak a saját toplistáját lássa, esetleg összesített statisztikát a többi játékosról. Így nem lesz igazi motiváció a csalásra.
13

Írj le belőle annyit, amiből

Joó Ádám · 2012. Aug. 4. (Szo), 23.38
Írj le belőle annyit, amiből megértjük, mit csinál az akalmazás. Azt nem kell leírnod, miért csinálja.

Ha tényleg jó ötlet, akkor pedig ajánlj üzletrészt a fejlesztőnek.
15

Hát ez az, eleve így

Totti 1986 · 2012. Aug. 4. (Szo), 23.46
Hát ez az, eleve így indultunk el, a fejlesztő jó ismerősöm, és látott benne fantáziát, ezért a kezdettől beszállt. Feleztük a költségeket, de volt néhány zökkenő, és az erre szánt pénzem azalatt elfogyott.
22

Egyedi vagy nem?

Pepita · 2012. Aug. 5. (V), 02.24
Azt (is) írtad, hogy vhol külföldön már nagyon megy egy ilyesmi oldal. Akkor kinek az ötletét is lopják?..

Azt sem értem, hogy ha közös a projekt (a programozóval), akkor miért kell neki fizetned?

Ha nem (vagy csak nehezen) megvalósítható az ötlet, akkor senki sem fogja ellopni.

Ha tényleg jó az ötlet és viszonylag "olcsón" megvalósítható, majd ellopják akkor, ha készen vagy. És levernek SEO-ban (vagy máshogy), ha tényleg van benne pénz.

Az mindenhogyan drága, hogy bármilyen módon védd az ötleted. Tehát pénz kell hozzá. Szerezz támogatót / befektetőt, ehhez kevesebb paranoia és több ravaszság szükségeltetik.
23

Az ötletet nem loptam, már

Totti 1986 · 2012. Aug. 5. (V), 02.39
Az ötletet nem loptam, már régen elkezdtem csinálni, amikor ráakadtam a külföldi oldalra, ami csak megerősített abban, hogy ne hagyjam abba a felkészülést és csináljam tovább.
A programozóval úgy állapodtunk meg, hogy kedvezményt kapok az óradíjból, majd a kedvezményes összeget befelezzük, és 50-50% a részesedés. Miután az alapot elkészíti, onnantól ő ingyen csinálja a fejlesztéseket, amikor szükséges, és csak én foglalkozom a tartalomkezeléssel.
Tulajdonképpen, ha bárki el is lopja a működési elvet az még édeskevés, fél évem munkája volt egyenként végigmenni 2500 játékon, tehát miután mi élesítjük az oldalt, akkor is csak az aktuális játékokra tudná alkalmazni a scriptet, és azokat ütemezve élesítjük ki, kb. 5 éves kifutással.

Épp tegnap ültem neki, áttanulmányozni a befektetőkeresés világát, én is ebben látnám a lehetőséget. De nem tudom, hogy kell az ilyet felkutatni.
25

Nehéz ügy

Pepita · 2012. Aug. 5. (V), 03.08
De nem tudom, hogy kell az ilyet felkutatni.
Sajnos én sem. Mindenképp valamennyit el kell árulnod belőle, kell lennie (nyilván van is) üzleti konstrukciónak, mindezt úgy, hogy mégse nyúlják le. Nem egyszerű.
30

Épp tegnap ültem neki,

Joó Ádám · 2012. Aug. 5. (V), 04.15
Épp tegnap ültem neki, áttanulmányozni a befektetőkeresés világát, én is ebben látnám a lehetőséget. De nem tudom, hogy kell az ilyet felkutatni.


http://weblabor.hu/blog/20120703/colabs-seed
17

Az md5 annyira nem könnyen

tgr · 2012. Aug. 5. (V), 00.01
Az md5 annyira nem könnyen visszafejthető, hogy egyáltalán nem visszafejthető...
19

Nem azzal van a baj, h

Totti 1986 · 2012. Aug. 5. (V), 01.22
Nem azzal van a baj, h visszafejthető-e, hanem azzal, hogy a js kódban nyiltan látszik, hogy hol történik az érték elkódolása. Ezek után ha bárki megtalálja azt a pontot, ahol én bármilyen módszerrel elkódolom az értéket, fogja, ugyanazzal az eljárással elkódol egy másikat, és kész is.
36

Itt szerintem

Pepita · 2012. Aug. 5. (V), 05.46
tgr azt (is) akarta mondani, hogy ha "md5-ölöd" az adatodat, akkor te leszel az, aki nem tud mit kezdeni vele szerveroldalon.
39

Annyira belebonyolódtunk, h

Totti 1986 · 2012. Aug. 5. (V), 10.57
Annyira belebonyolódtunk, h ezt az alapvető dolgot el is felejtettem, pedig eleve úgy indultam, h visszafejthetetlen kódolást nem alkalmazhatok.
21

Állítólag

Pepita · 2012. Aug. 5. (V), 02.12
24

Ebben lehet vmi... Ami

Totti 1986 · 2012. Aug. 5. (V), 02.47
Ebben lehet vmi...
Ami viszont a téma-felvetésemet illeti, inkább evezzünk egy kicsit más vizekre.

Mivel legtöbbetek nem ma kezdte a programozást, és velem ellentétben sokan tanultátok is ezt és tapasztaltátok a különböző biztonsági réseket, inkább mondjatok olyan példákat, ki milyen módszert ismer arra, hogy feltörjön egy ilyen folyamatot.

Mert én még mindig ott tartok, hogy azt mondjátok, feltörhető, de a hogyanról még semmit nem tudok.

Nyilván nem get-tel fogom a változók értékét átadni, és le fogom vizsgálni, h ajax hívással érkezett-e az adat vagy direktben. De pontosan mi az a rés, amit meg kell próbálnom befedni?
26

Hacking

Pepita · 2012. Aug. 5. (V), 03.26
Szerintem az itt fórumozók többsége nem foglalkozik hackeléssel (naiv vagyok?:)), aki estleg mégis, nem fogja teregetni. Én úgy fejlesztek, hogy az általam ismert ("gyerekszintű") feltörési módokat alapból kivédem, plusz - ahol úgy gondolom - beépítek némi egyéb (saját ötletű) furfangot. Ezt viszont ne várd, hogy kifejtsem, mindig egyedileg találok ki valamit, ami a Júzertől jövő adatok hamisítását nehezíti. Most eszembe jutott pl. a fizetős póker - hát megmondom őszintén: én nemigen mernék ilyesmibe belevágni jelenleg. Ha az alapkoncepciód megengedi, u.azt javaslom, mint Ádám: csak olyan adatokkal "játsz", amit nem éri meg hamisítani.
De pontosan mi az a rés, amit meg kell próbálnom befedni?
Senki nem fogja ezt pontosan felsorolni, mert napról-napra újulna a lista. Az biztos, hogy semmi sem biztos, ami kliensoldalról jön. Lehet takargatni / kódolgatni az adatot, de attól a pillanattól kezdve, hogy bármi pici tétje van a dolognak, biztos lehetsz benne, hogy próbálkozni fognak a feltöréssel. És előbb-utóbb sikerül is, 100%-os védelem a weben nem létezik (tulajdonképp desktop-on sem).
27

Akkor rosszul

Totti 1986 · 2012. Aug. 5. (V), 04.05
Akkor rosszul fogalmaztam.
Nyilván nem arra céloztam, h itt hackerek garmadája fordul meg, hanem arra, hogy biztosan ismertek olyan módszert, amivel már szembesültetek, amit már ki kellett védeni.
Gondolok itt arra, mint pl. "ha beviteli mező van egy weboldalon, escapelni kell a mezőből kapott adatot, mert ha sql parancsot ir be, máris bedőlhet az adatbázis". Ez csak egy példa volt tök más területről. Ilyenekre gondoltam.
Hogy pl. tényleg megállítható egy script futása, és folytatható-e, hogy átírható-e egy js változó értéke, vagy teljesen más oldalról várjam a feltörést, pl. h vki direktben hivja meg az ajax hivásomat, stb.
Csak mert biztonsági dolgokban amatőr vagyok, szinte már-már naiv. (Annak idején, mikor még kezdtem, meg voltam róla győződve, h cookie-ban eltárolni, h admin=1, az biztonságos.)
28

Egyetlen parancssorból,

Joó Ádám · 2012. Aug. 5. (V), 04.07
Egyetlen parancssorból, böngésző használata nélkül, kézzel írok neked olyan HTTP kérést, amilyet csak akarok. Például 2 147 483 647-es pontszámmal, miután a JavaScript kódban megnéztem, hogyan adod át.
29

Erről beszélek. És akkor most

Totti 1986 · 2012. Aug. 5. (V), 04.12
Erről beszélek.
És akkor most itt ülök bambán, és gondolkozom, h ezzel a mondattal mit is kezdjek, nemhogy kivédjem.
32

Nem tudod kivédeni. Az

Joó Ádám · 2012. Aug. 5. (V), 04.21
Nem tudod kivédeni. Az egyetlen hely, ahol a pontszámot hitelesítéssel ellátó kódot el tudnád rejteni, az a Flash játék, lévén az bájtkódra van fordítva. Minden mást láthat a játékos.
33

Értem. Tehát

Totti 1986 · 2012. Aug. 5. (V), 04.33
Értem.
Tehát összefoglalva:
Az egyetlen lehetőség, (a memória hacket leszámítva), h le tudjam kódolni a kijövő adatot, ha majd egyszer a flash kódjába irathatom be a scriptemet.
Addig, mivel a js nyilt forrású, bárki rájöhet, hol és hogy alakítom át a kijövő adatot. Tehát csak megnehezíteni lehet a dolgát, ellehetetleníteni nem.
Akkor azon fogunk dolgozni, h megnehezítsük neki. Mást nem tehetünk.
Köszi mindenkinek a segítséget, hálás vagyok.
34

Esetleg nézz utána, hogy

Joó Ádám · 2012. Aug. 5. (V), 04.34
Esetleg nézz utána, hogy hogyan tudod a kész játékot becsomagolni saját Flash kódba, így az eredmény nem hagyja el a lejátszót kódolatlanul. Ezután minden kiszolgálásnál generálhatsz a játékba egy egyedi kulcsot, amit a kiszolgáló ellenőrizhet az eredmény megérkezésekor.
38

Ez akár használható is lehet,

Totti 1986 · 2012. Aug. 5. (V), 10.56
Ez akár használható is lehet, csak kérdés, h legális-e.
Mindenesetre utánanézek, köszi.
40

Nem tűnik egyértelműnek, hogy

Joó Ádám · 2012. Aug. 5. (V), 13.36
Nem tűnik egyértelműnek, hogy a fenti megoldás jogi szempontból minek számít, azonban ha a játékot magát ingyenesen elérhetővé tette a készítője, akkor kötve hiszem, hogy ezt aggályosnak tartaná.
42

Ilyen éles határ szerintem

tgr · 2012. Aug. 5. (V), 13.54
Ilyen éles határ szerintem nincsen. Amíg a kód a felhasználó gépén fut, mindenképpen lehetséges lesz feltörni, a bájtkódot csak valmivel nehezebb visszafejteni, mint egy jól obfuszkált JS kódot (nem vagyok benne biztos, hogy sokkal). A gyenge pont az, hogy az eredmény plaintextben közlekedik a Flash és a JS rész között, de azért ezzel is lehet trükközni, pl. implementálsz AES vagy valami hasonló titkosítást JS-ben, és kulcsként a javascript modulod kódját használod fel hozzá; így ha valaki belepiszkál a JS eredménykiolvasó részébe, azzal elrontja a kulcsot, arra rájönni pedig egy obfuszkált kódból, hogy milyen titkosítást valósít meg és honnan veszi hozzá a kulcsot, nem olyan könnyű feladat.
46

A gond az, hogy ha bárki egy

Totti 1986 · 2012. Aug. 5. (V), 14.59
A gond az, hogy ha bárki egy kicsit konyít az swf-js adatátadáshoz, tudni fogja, h a GetVariable fgv-t kell keresni. Amint megvan, elég csak annak a változónak az értékét átírnia, ami a GetVariable fgv-nyel kapná az értékét, és máris hiába bármilyen későbbi titkosítás, a user a gyökerénél fogja meg a dolgot.

Na igen, ugyanezt irtad le a 43. kommentben...
47

Hát ugye az obfuszkálás

tgr · 2012. Aug. 5. (V), 15.32
Hát ugye az obfuszkálás valahogy úgy néz ki, hogy

var a=window,b='GetVariable';
//...
var z=a[b]();
szóval azért annyira nem triviális. Meg fejlettebb böngészőkön lehet getter/settert használni, ami viszonylag nehezen visszafejthető módon letárol egy biztonsági másolatot is az értékből.
59

var z=a[b]();Ilyen fgv

Totti 1986 · 2012. Aug. 6. (H), 01.29
var z=a[b]();

Ilyen fgv hivást még nem is láttam.
Így viszont akár a
b='GetVariable';
rész is átirható
b='G';
c='e';
d='t';
e='V';
f='a';
g='r';
h='i';
i='b';
j='l';

k=b+c+d+e+f+g+h+f+i+j+c;
alakban vhogy jól szétszedve a változó értékének összefűzését, és akkor talán a hacker dolga is kicsit meg lenne nehezítve.
Plusz ugyanígy a kiolvasott változó nevét is hasonlóan lehetne összefűzni.
49

Automatikus eszközzel

Joó Ádám · 2012. Aug. 5. (V), 15.54
Automatikus eszközzel újraformázott C forrás vagy gépi kódból visszafordított assembly közt egy világ a különbség.

Amit írsz, az semmit nem javít a helyzeten, mert meg sem kell néznem a JavaScriptet, elég ha a Flash objektumot cserélem le hamisra. Mindenféleképpen a játékon belül kell megoldani a hitelesítést.
50

Nem értek a Flash-JS

tgr · 2012. Aug. 5. (V), 16.41
Nem értek a Flash-JS kommunikációhoz, de ha mondjuk JS-ből ki lehet olvasni a Flash fájl tartalmát, akkor azzal is alá lehet írni.
51

De mit ér, ha azt olvas ki

Joó Ádám · 2012. Aug. 5. (V), 17.03
De mit ér, ha azt olvas ki belőle, amit a támadó akar?
52

Mennyire könnyű módosítani

tgr · 2012. Aug. 5. (V), 17.19
Mennyire könnyű módosítani egy belső JS függvény eredményét anélkül, hogy magát a függvényt módosítanád? Szerintem egyáltalán nem.
53

Böngészőn belül, vagy kívül?

Poetro · 2012. Aug. 5. (V), 18.03
Böngészőn belül, vagy kívül? Böngészőn belül elég átírni a változó tartalmát egy debuggerrel. Böngészőn kívül pedig beállítom hogy a mysecret.js fájlt ne az example.com-ról töltse le, hanem az én gépemről, és erre csak egy tűzfal szabályt kell csinálnom.
55

Az utóbbi ellen véd az, ha a

tgr · 2012. Aug. 5. (V), 22.42
Az utóbbi ellen véd az, ha a js kódot magát használod fel titkosító kulcsként (mondjuk sztringgé transzformálod a függvényeket és úgy). Az előbbihez egyrészt meg kell találni a változót, amit azért eléggé meg lehet nehezíteni, másrészt getter/setterekkel meg lehet nehezíteni a dolgod (ezt persze nem minden böngésző támogatja).
54

Nem érted. Akármit

Joó Ádám · 2012. Aug. 5. (V), 18.08
Nem érted. Akármit csinálhatsz JavaScriptben, ha egy olyan Flash objektumból veszed az adatokat, amit én lecserélek, és tetszőleges pontszámot ad át a JavaScriptnek.
56

Ha JS-ből ki tudod olvasni a

tgr · 2012. Aug. 5. (V), 22.44
Ha JS-ből ki tudod olvasni a Flash fájl tartalmát (nem tudom, hogy ez lehetséges-e), akkor ez önmagában nem nagy probléma, mert elbukik a megváltozott ellenőrző összeg miatt.
57

Basszus és erre még csak nem

Totti 1986 · 2012. Aug. 6. (H), 01.16
Basszus és erre még csak nem is gondoltam.
Mondjuk játékonként más és más a kiolvasott változó neve, de egy gyakorlott hacker azt is ki tudja olvasni és lecserélni a fájlt egy másikra, ami ugyanazt a változót tartalmazza...
58

Ezért kell megoldjad, hogy a

Joó Ádám · 2012. Aug. 6. (H), 01.26
Ezért kell megoldjad, hogy a játékon belül legyen aláírva a pontszám.
60

Ez a későbbiekben mindenképp

Totti 1986 · 2012. Aug. 6. (H), 01.33
Ez a későbbiekben mindenképp így lesz, de a mostani helyzetet is meg kell oldanom, ha máshogy nem is, csak a lehető legjobban szétdarabolva a kódot, hogy nagyon nehéz legyen kiismerni.
61

Ahogy feljebb írtam, nézd

Joó Ádám · 2012. Aug. 6. (H), 01.50
Ahogy feljebb írtam, nézd meg, hogy be tudod-e csomagolni a saját Flash kódodba. Azzal ezt érnéd el.
43

Azt kell megérteni, hogy a

tgr · 2012. Aug. 5. (V), 14.03
Azt kell megérteni, hogy a kliensoldali szoftver alapvetően úgy működik, hogy te odaadsz a usernek az algoritmust azzal, hogy "ezt futtasd le légyszi", ő pedig visszaad egy értéket, hogy "ez volt az eredmény", és semmilyen eszközöd nincs annak ellenőrzésére, hogy igazat mondott-e, vagy egyáltalán lefuttatta-e a kódodat.

Ami a hogyant illeti, pl. Firebuggal vagy Fiddlerrel lehet monitorozni a böngésző és a szerver közötti kommunikációt, Firebuggal végig lehet léptetni a JS kódot, vagy tetszés szerint módosítani futás előtt vagy akár közben; és van millió szkript, ami a minifikált kódot olvashatóra formázza. Egy szándékosan olvashatatlanná tett JS kód megértése még így is nagyon nehéz (egyszer valami debuggolás közepén megpróbáltam visszafejteni a Google Analytics kódját, és egyetlen <100 soros függvény működését majdnem egy teljes napig tartott megérteni), de azért bőven lehetséges. Iletve ha nagyjából sejted, mit csinál a kód (és egy pontszámot hazaküldeni nem épp bonyolult folyamat), általában van olyan pont, ahol nagyon könnyen módosítható a működése, pl. a beolvasó függvénybe beszúrsz egy *=100 sort, aztán a kód többi része már titkosíthatja a számot kedvére.
31

Az MD5 nem titkosításra való.

Joó Ádám · 2012. Aug. 5. (V), 04.17
Az MD5 nem titkosításra való.
35

Hát mire?

Pepita · 2012. Aug. 5. (V), 05.41
Ez nekem új.
Szerk.: mármint amit nem kell visszafejteni...
37

Hash

Hidvégi Gábor · 2012. Aug. 5. (V), 06.09
Ellenőrző összeg. Egy bájtsorozatnak mindig ugyanaz a hash-e, így tudod leellenőrizni például, hogy amit letöltöttél, az jó-e.
41

Amit nem kell

tgr · 2012. Aug. 5. (V), 13.45
Amit nem kell visszafejteni,az nem titkosítás :)
45

Mondjuk szigorúan véve itt

tgr · 2012. Aug. 5. (V), 14.17
Mondjuk szigorúan véve itt nem is titkosításról van szó, hanem aláírásról, és arra az md5 nem szükségképpen rossz (az eredmény mellé elküldöd az md5(eredmény+titok) ellenőrző összeget), de könnyen hasra lehet esni vele, pl. ha md5(titok+eredmény)-t használsz helyette, akkor az már egy length extension támadással triviálisan törhető, ha rájön a támadó, hogy md5-öt használsz.