Támadható-e a scriptem?
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 -> jsItt az swf az swf objektum, a jspoint pedig megkapja az swfpoint értékét az swf objektumból.
js -> phpItt 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.
■ 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');
js -> php
$.ajax({
url: 'php/phpfajl.php?key=swfpoint&val=' + jspoint,
success: function(data) {
//...
}
});
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.
Nyilván a böngészőtől érkező
Valahogy meg kell oldanom,
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.
Minimum
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...
HTTP
AS3Crypto
crossdomain.xml
Köszi a segítségeket! Egy
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.
Felejtsd el
Könnyen mondod, nekem ettől
Akkor beszélj a teljes
Az a baj, hogy iszonyatosan
Védesd le az ötleted, mint az
Lehet, hogy az megoldás
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.
Szerintem reménytelen.
Nekem bőven elég a
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.
Ezt egy kicsit részletezd, légyszíves. :)
Szimmetrikus titkosítás pl.
Milyen kár, hogy nincs a
goto
.Ha a Flash játékot nem tudod
Írj le belőle annyit, amiből
Ha tényleg jó ötlet, akkor pedig ajánlj üzletrészt a fejlesztőnek.
Hát ez az, eleve így
Egyedi vagy nem?
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.
Az ötletet nem loptam, már
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.
Nehéz ügy
Épp tegnap ültem neki,
http://weblabor.hu/blog/20120703/colabs-seed
Az md5 annyira nem könnyen
Nem azzal van a baj, h
Itt szerintem
Annyira belebonyolódtunk, h
Állítólag
Kitalálója szerint senki ne használja már többet az MD5-öt!
Ebben lehet vmi... Ami
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?
Hacking
Akkor rosszul
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.)
Egyetlen parancssorból,
Erről beszélek. És akkor most
És akkor most itt ülök bambán, és gondolkozom, h ezzel a mondattal mit is kezdjek, nemhogy kivédjem.
Nem tudod kivédeni. Az
Értem. Tehát
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.
Esetleg nézz utána, hogy
Ez akár használható is lehet,
Mindenesetre utánanézek, köszi.
Nem tűnik egyértelműnek, hogy
Ilyen éles határ szerintem
A gond az, hogy ha bárki egy
Na igen, ugyanezt irtad le a 43. kommentben...
Hát ugye az obfuszkálás
var z=a[b]();Ilyen fgv
Ilyen fgv hivást még nem is láttam.
Így viszont akár a
Plusz ugyanígy a kiolvasott változó nevét is hasonlóan lehetne összefűzni.
Automatikus eszközzel
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.
Nem értek a Flash-JS
De mit ér, ha azt olvas ki
Mennyire könnyű módosítani
Böngészőn belül, vagy kívül?
mysecret.js
fájlt ne azexample.com
-ról töltse le, hanem az én gépemről, és erre csak egy tűzfal szabályt kell csinálnom.Az utóbbi ellen véd az, ha a
Nem érted. Akármit
Ha JS-ből ki tudod olvasni a
Basszus és erre még csak nem
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...
Ezért kell megoldjad, hogy a
Ez a későbbiekben mindenképp
Ahogy feljebb írtam, nézd
Azt kell megérteni, hogy a
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.
Az MD5 nem titkosításra való.
Hát mire?
Szerk.: mármint amit nem kell visszafejteni...
Hash
Amit nem kell
Mondjuk szigorúan véve itt