Mysql adatbiztonság.
2009-02-14T14:22:41+01:00
2009-02-15T23:30:59+01:00
2022-07-19T05:13:04+02:00
  • Köszönöm mindenkinek a tanácsokat ZéZé sok ötletet sorolt fel neki adok pontot
    Mutasd a teljes hozzászólást!
  • [törölve]
    Mutasd a teljes hozzászólást!
  • Oks, új ötlet, csinálsz egy connection objectet, amibe berakod private változóként az sql felh nevet és jelszót, és ez szórja neked a connectionöket. Aztán kirakod az ilyen objecteket memcachebe.

    Mondjuk szerintem ez az egész értelmetlen. Jól meg kell írni az oldalt, aztán annyi.

    Amit nem értek, minek minden usernek külön mysql account?
    Egyrészt ha megszerzik az user felh nevét,jelszavát, máris van egy sql accountjuk.
    Szerintem jobb megoldás, ha az sql accountnak semmi köze sincs a felhasználókhoz.
    Fogod kirakod külön fájlokba az egyes sql usereket, a mappájukat .htaccess-el levéded, aztán ennyi.

    Én úgy csinálom, hogy van egy SQLUser class-em, ebből extendsel csinálok egy SQLUserRoot objectet, aztán abba rakom be privateben a jelszót, meg ilyesmit.
    Mutasd a teljes hozzászólást!
  • Nem egy nagy cucc. A lényege az, hogy néha-néha lecseréled a session-id-t (nyilván mind kliens mind szerver oldalon).

    Ami még kimaradt a listából:
    - ne használj transzparens session-id-t. Azaz követeld meg a sütihasználatot, mert az url-ekbe elhelyezett session-id kisizvárgása jóval könnyebb
    - használj php hardeninget, ha tudsz (pl: suhosin)
    - érd el, hogy az apache szerver-statisztikák ki legynenek kapcsolva

    Itt nézz körül: http://johnny.ihackstuff.com/ghdb.php
    Mutasd a teljes hozzászólást!
  • Kösz az öltetlistát, már adtatok pár ötletet ami nem jutott eszembe, a sessionid lebegtetés-t leírnád pár szóval mit is takar? ez az egyetlen amiről még nem hallottam és a google-el se nagyon jutottam semire.
    Mutasd a teljes hozzászólást!
  • adi0002 javaslata jól hangzik, csak épp nem használható. Vannak ugyanis, akik proxy farmon vagy hasnoló klaszterátjárókon keresztül érkeznek és akkor az IP változatlansága nem áll fenn.

    De amiről még nem esett a topicban szó:
    - CSRF token használata
    - a jelszót mindenképp sózva és hash-elve tárold
    - a jelszót hash-elve küldd át, akár azt is sózva
    - tiltsd le a login formon az autocompletion-t
    - ahol lehet használj https-t
    - http-only cookie-k
    - x perc tétlenség után automatikus kijelentkezés elnavigálás az oldalról
    - alacsony session idő
    - sessionid lebegtetés
    - kliens oldalra a session cookie-n kívül semmit ne tárolj
    - használhasz saját, jobb eloszlású véletlengenerátort a sessionid generálására (nem a hash számít, hanem a véletlen bázis)
    - véletlenszerűen több esetben is bekérheted az azonosítókat, vagy akár minden kritikus műveletnél
    - használj többszintű azonosítást (token, sms, stb...)
    - soha ne küldd ki a jelszót levélben (nem is tudnád, ha hashelve van tárolva)
    - használhatsz saját session kezelést, akár kripográfiai eszközökkel támogatva
    - kiadhatsz és megkövetelhetsz személyes tanusítványt, bár ezt nehezebb implementálni
    - a code obscurity nem véd

    nnna... kb ennyi jutott eszembe, de ahogy Péter01 is mondá, 100% biztonság nincs.
    Mutasd a teljes hozzászólást!
  • Es egyetertek..tokeletes weboldal nincs..de van jol vedett..es olyan ami mar nem eri meg az erofeszitest, hogy kinlodjanak a feltoresevel..
    faraszd ki a hackert..
    Mutasd a teljes hozzászólást!
  • Meg valami..ez lehet h csak elmelet..amikor lattam a Cube c. filmet..eszembe jutott valami..ha el is lopjnak a sessionod-et..csempessz bele a sessionokba "hibas" adatokat..amik csak ugy ott vannak..nem sokat..de eleget hogy megzavarja a feltorot..es csak a te scripted tudja, hogy a session darabkaibol, hogyan rakja ossze az igazi adatot..
    nem volt idom meg dolgozni ezen..de latok benne fantaziat.
    Ha nagyon jo a hacker, es megszerez adatokat akkor is vidd bele egy labirintusba..
    ez mar az elmek jateka..te eldugod..o meg akarja talalni.. de te vagy elonyben!
    Mutasd a teljes hozzászólást!
  • Sessionban is tarthatod kodolva az adatokat, amit csak egy sajat jol megfontolt algoritmussal lehet visszafejteni.
    Mutasd a teljes hozzászólást!
  • Adatbázisban tárold az IP címet, ahonnan belépett a felhasználó. Ha az IP cím változik, akkor a sessiont törlöd, innentől semmit sem ér az ellopott session.
    Mutasd a teljes hozzászólást!
  • Közben azt találtam ki, hogy ha egy kétlépcsős származtatással határozom meg a felhasználó mysql jelszavát az oldalra beírt jelszavából, és a köztes származtatott jelszót letárolom sessionben, a származtatás módja pedig titkos, akkor ha a sessiont valaki ellopja abból se a felhazsnáló eredeti jelszavát nem tudja megmondani se a mysql jelszavát. Azt hiszem ezzel így már elégedett lehetek... Minden esetre várom az ötleteket.
    Mutasd a teljes hozzászólást!
  • Szia!

    Amit tehetsz az az, hogy session és cooke segítségével azonosítod a felhasználót, html templatet használsz és kódolod a jelszavakat. Figyelsz a inputokra reguláris kifejezések segítségével, hogy nincs e benne olyan rész, mely hatással lehet az sql lekérdezéseidre. Végig gondolod, írsz egy specifikációt és felépíted a legjobb tudásod szerint az oldalt és megpróbálod elvarni a betörésre alkalmas szállakat. Ez a módszer segít abba, hogy akárki ne tudja feltörni az oldalad, de sajnos 100% -os nem lesz. Írd meg, teszteld és kérj meg másokat hogy próbálkozanak, illetve te a forrás kód ismeretébe keresd a hibákat. Menj végig a folyamatokon hogy mi mit csinál, mit vár és ha más kap mi történik. Ahol nincs szükség 500 karakterre ott ne várj többet. Nem 100% de a legtöbb amit értelmes keretek között lehet tenni.
    Mutasd a teljes hozzászólást!
  • nincs 100%-ig biztonságos oldal!
    a nasa pl fizet érte ha feltöröd az oldalát ...
    Mutasd a teljes hozzászólást!
  • Ez lesz valószínűleg, de ez nem változtat rajta hogy jól kell megírnom és várom az ötleteket!
    Mutasd a teljes hozzászólást!
  • írd meg az oldalt és kérj meg vkit hogy próbálja meg feltörni, itt lehetőleg ne a közértbe az eladót kérd meg, remélem érthető volt, vannak akik ilyennel foglalkoznak direkt
    Mutasd a teljes hozzászólást!
  • A connect által visszaadott resource serializálására gondolsz? resource változókat nem lehet serializálni, de ha még lehetne is hiába küldeném át attól a kapcsolat valójában nem élne, lenne egy változóm, ami egy nem létező kapcsolatra hivatkozik. Tudom tudom lehet h elszált, szóval akinek van más ötlete mondja nyugodtan.
    Mutasd a teljes hozzászólást!
  • Hát ez egy elég elszállt dolog szerintem. Max nagyon kevés emberre működőképes.
    Ha tényleg ilyent akarsz, akkor csinálj egy connectiont az első lapon, és próbáld meg serializevel átadni sessionben a második lapnak. Nagyon nem garantált, hogy sikerül újra életre kelteni jelszó, meg ilyesmik nélkül, vagy az is lehet, hogy a serializált formában látszik majd a jelszó, de ezen kívül nincs más ötletem.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    A problémám az lenne, hogy szeretnék egy olyan alkalmazást (php, mysql, javascript felhasználásával főleg) készíteni, ahol meglehetősen fontos lenne a biztonság. Tehát komolyabb hackelés vagy egy (véletlen akár ideiglenesen bekerülő) fatális programozási hiba folytán se férjenek hozzá a felhasználók egymás adataihoz.

    Én valahogy így gondoltam ennek a megoldását:
    mysql-ben a nézetek segítségével már kiválóan kialakíthatóak rekord szintű jogosultságok, így ha minden felhasználó egy saját mysql hozzáférést kap akkor már php-ben vagy javascriptben történhet bármi csak ahhoz fér hozzá amihez szabad.

    Ez szép és jó, csak mi legyen ennek a mysql felhasználónak a jelszava? Ha külön letárolom valahol, hogy egy adott felhasználóhoz tartozó mysql hozzáférésnek mi a jelszava, akkor már megint elég átverni a php-t vagy valami hibát véteni a programozásban, hogy egy másik felhasználó adatait és az ő jelszavát olvassa ki.

    Na akkor gondoltam legyen ugyanaz a mysql felhasználó jelszava, mint amivel az user a weboldalon belép és tőle tudjuk meg és akkor megint nem lehet trükközni. Ezzel meg ott a gond, hogy mikor a következő php fájlt futtatjuk le a bejelentkezés után, annak is tovább kéne adni a mysql felhasználó jelszavát. Ehhez kliens oldalon le kéne tárolni a jelszót valahogy javascripttel, amire megint csak nem jut eszembe biztonságos megoldás. Sessionbe se szeretném tárolni, mert az se teljesen biztonságos (jó, jó tudom, hogy ha nem sütiben tárolódik azért elég biztonságos a session, de azért azt is lehet hackelni bizonyos esetekben, de ha más nem ez lesz végül)

    Szóval ha valakinek lenne ötlete, hogyan oldjam meg a dolgot örülnék neki. Más ötleteket is szívesen fogadok mint amerre én indultam.

    Jah, és tudom hogy néha túlzásokba esek meg már szinte paranoiás amit leírtam, szóval ne írjátok, hogy agyamra ment a kódolás tudok róla.
    Ha nem lehet ennyire biztonságosra megírni, hát akkor nem lesz. Tehát a végső kérdés: Ti hogyan építenétek fel egy igazán biztonságos oldalt?
    Mutasd a teljes hozzászólást!
abcd