Input védelme
2009-02-19T16:43:02+01:00
2009-02-22T21:35:24+01:00
2022-07-25T16:26:17+02:00
  • szerintem szerveren ezt nem lehet beallitani :(
    a magic quotes beallithato php.ini-ben es apach vhost confban meg talan meg htaccess ben is de ez ervenyes az egesz bemenetre (POST, GET, COOKIE) belul a kodban mar a php nem tudja hogyan fogod hasznalni
    Mutasd a teljes hozzászólást!
  • Köszi, de ha jól értettem, ez se szerver beállítás, hanem a kóddal kell foglalkozni
    Mutasd a teljes hozzászólást!
  • esetleg ennek a hasznalata ha be van kapcsolva a magic cuotes
    jellyandcustard.com
    Mutasd a teljes hozzászólást!
  • Nem.

    Olyannal, amit pl egy ilyen
    "select * from tábla where mezo='".$_POST['keresendo']."'"
    keresés okoz, ha a postolt '

    ---

    Bár a véleményem, hogy hibaüzenetet nem elnyomni, hanem a hiba okát kijavítani kell.
    Mutasd a teljes hozzászólást!
  • Már csak az a kérdés, hogy milyen típusú hibaüzenetekkel van tele az oldal. Ha olyanokkal, amiket el lehet nyomni, akkor az van kikapcsolva. Bár ezt kétlem.
    Mutasd a teljes hozzászólást!
  • Köszi!

    De ha a keretrendszer nem változik, akkor php beállítással nem lesz "szelektív", ha jól értem, tehát hogy máshogy kezeli adatbázis fele és máshogy a visszaírásnál.

    Bár annyi minden van a php beállításaiban.....
    Mutasd a teljes hozzászólást!
  • Ami igazán érdekes (érdekelne), hogy lehet-e szerver beállítással (ini fáj vagy más) elérni, hogy a


    Nem, nem lehet. De az ember lehetőleg nem is áll neki SQL-t kolbászolni, meg kellő körültekintés nélkül bármit is kiírni egy HTML oldalra

    Vagyis hát úgy lehet, hogy megfelelő keretrendszert használsz az adatbázishoz is, meg a megjelenítéshez is. A megfelelő adatkezelő és megjelenítő réteg is gondoskodik a számára éppen megfelelő escape-elésről. De ez ugyanaz a kellő körültekintés.
    Mutasd a teljes hozzászólást!
  • Mindenképp a magic_quotes kikapcsolása a legértelmesebb megoldás


    Én is úgy irok meg mindent (Illetve sajnos vizsgálom, hogy a leendő szerveren éppen hogy ál, hogy egy ottani upgrade ne borítson ki )

    ===
    Ami igazán érdekes (érdekelne), hogy lehet-e szerver beállítással (ini fáj vagy más) elérni, hogy a
    <form method="post">
    <input type="text" name="keresendo" value="">
    ...
    </form>
    formát ba beírt ' (egy szem aposztróf) ha ráengedem egy adatbázisra:

    ... "select * from tábla where mezo='".$_POST['keresendo']."'"
    forma (függvény nélkül) ne akassza ki az sgl-t (egyéb durvaságokat most nem nézve), de a

    <input type="text" name="keresendo" value="<?=$_POST['keresendo'];?>">

    meg ne adjon \'-t.
    Mutasd a teljes hozzászólást!
  • Mindenképp a magic_quotes kikapcsolása a legértelmesebb megoldás. Eleve a magic_quotes csak arra jó, hogy a biztonságról, sql-injectionről és hasonlókról még soha nem hallott kutyaütő php betyárok által készített honlapoknak is némi védelmet nyújtson, de normálisan,szakszerűen elkészített programban csak felesleges nyűg. Sajnálatos módon a magic_quotes használatát csak a php.ini-ben lehet kikapcsolni, egy program maga nem tudja, így ha nem garantálható ennek a kikapcsolt állapota, akkor marad a mezítlábazás és a programodnak kell gondoskodnia róla, hogy a magic_quotes állapotának függvényében a bejövő adatokból kiirtsa a backslasheket (célszerű ugye ezt a program legelején elhelyezni és ráereszeteni a $_GET, $_POST, stb. tömbökre).

    Ja, és olyan meg nincs, hogy
    "nem szeretné" valaki az adatbázisba tárolásnál/keresésnél használni a addslashes (mysql_real_escape_string, ..) függvényeket
    Aki nem szeretné, az programot írni se szeressen
    Mutasd a teljes hozzászólást!
  • Akkor az elözmény:

    Teszteltem egy oldalt és belekötöttem, hogy a mezőben bevitt ' hatására a következő oldal tele van sql hibaüzenetekkel.

    Mire a készítője azt a megoldást adta, hogy náluk (a fejlesztési helyen) ez nem fordul elő, ahol van az oldal ott rosszul van bekonfigurálva a szerver.

    Én csak a "magic_quotes_gpc" kapcsolóra tudtam gondolni, akkor ez a része javult is, de utána a beviteli mezőkben kezdett el "szaporodni" a \.
    Ezért érdekelne, hogy mit lehetne beállítani, hogy az adatbázis kezeléskor ne legyen gond az ', de ha vissza kell írni a képernyőre, akkor ott meg jól jelenjen meg.

    Micu kérdez

    Sajnos a konfigurációs beállítások nem(sem) képzik az alapos tudásom tárgyát.
    Mutasd a teljes hozzászólást!
  • Wow, Micu kérdez Szóval... Miért nem jó a függvény? Mert sok helyre kellene beilleszteni? Írj egy foreach-t, ami minden post-on végig megy. Mellesleg szerintem nagyon nem jó csak úgy minden nélkül beküldeni a db-be, hacsak a html nem engedélyezett. Ellenkező esetben meg nem ártana egy htmlspecial...
    A másik megoldás pedig, hogy nem frissítenek php 6-ra
    Mutasd a teljes hozzászólást!
  • Hát igen. De itt a hangsúly a "függvény nélkül"-ön volt
    Mutasd a teljes hozzászólást!
  • ezzel voltak gondjaim, végül nem találtam jobbat a preg_replace-nél.
    Mutasd a teljes hozzászólást!
  • Talán ide tartozik.

    Ha "nem szeretné" valaki az adatbázisba tárolásnál/keresésnél használni a addslashes (mysql_real_escape_string, ..) függvényeket, akkor ugye használhatja a pl. a php.ini-ben a "magic_quotes_gpc=on" beállítást.

    Az első kérdésem, hogy jó-e ezt, javasolni egy megrendelőnek, mert a php.net oldalon
    Warning
    This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.

    információt olvastam.

    Másik gondom ezzel kapcsolatban, hogy, ha visszaírjuk egy beviteli mezőbe (mert pl. keresőt írunk), akkor pl. az it's -> it\'s lesz.

    Van-e valami php kapcsoló (tehát nem függvényezés, vagy saját osztály) arra, hogy ha adatbázisba akarom írni, akkor az '-ot \'-ként kezelje, de ha visszairatom egy beviteli mezőbe, akkor meg ne \' legyen.

    Köszi!

    Mutasd a teljes hozzászólást!
  • Létrehozol egy SQL táblát amibe bejegyzed az oldallekéréseket pontos idővel. Minden oldallehívásnál ellenőrzöd hogy mondjuk 5mp-en belül volt e az előző lekérés. Ha igen, akkor nem jeleníted meg az oldalat. Így a legegyszerűbb. Aztán ha bonyolultabbat akarsz akkor bizonyos számú oldallekérés után adsz mondjuk fél óra tiltást. Persze IP cím alapján.
    Mutasd a teljes hozzászólást!
  • Bocs,hogy ide írok, de a Google nem ad ki a flood védelemre semmi normálisat. Hogy lehet megcsinálni?
    Mutasd a teljes hozzászólást!
  • atomtamades ellen is ved?

    szvsz ennyi eleg hogy levedd a formodat esetleg selectnel meg tesztelheted hogy a selectben kivalasztott adat helyes-e, tehat olyan lett kivalasztva mint amiket te megadtal. ugyelj a hidden valtozokra, azokat barmikor meg lehet valtoztatni es igy pld mas adatait modositani, ugyan igy a get parametereket.
    Mutasd a teljes hozzászólást!
  • Esetleg még azt meg lehet csinálni, hogy biztosítod hogy csak a saját formodból érkezhessenek az adatok. Amikor kigenerálod a formot, generálsz mellé egy valamilyen hosszúságú véletlen karaktersorozatot is. Ezt elmented session-be, és a formba is beteszed egy hidden típusú inputba. Az adatok megkapásánál összehasonlítod a kettőt, és ha nem egyezik, nem dolgozod fel őket. Ez pl. segíthet ún. account lopó oldalak ellen.
    Mutasd a teljes hozzászólást!
  • A flood ellen is van védelmem.
    Oda 3mp-t állítottam be.

    Akkor mi ellen kell még, és hogy védekezni?
    Mutasd a teljes hozzászólást!
  • A szóközöket kezelem trim()-el.
    Mutasd a teljes hozzászólást!
  • értem, köszönöm szépen
    Mutasd a teljes hozzászólást!
  • Hát aki csinálja a védelmet az eldönti hogy neki mit jelent. Nem lehet abszolút megmondani.
    Mutasd a teljes hozzászólást!
  • aham, így már világos. de mit jelent az, hogy viszonylag rövid időn belül érkező nagyszámú lehívás? 5 másodperc alatt 5?
    Mutasd a teljes hozzászólást!
  • Nagyon egyszerű: ha valaki túl gyakran hív le egy oldalt, az egyrészt feleslegesen terheli a szerveredet, másrészt lehet, hogy valami turpisságban töri a fejét. Ezért ajánlatos a viszonylag rövid időn belül érkező nagyszámú lehívást blokkolni. Így már érted?
    Mutasd a teljes hozzászólást!
  • ez a flood ez mi? rágugliztam, és találtam is scripteket, de nem igazán értem mire van
    Mutasd a teljes hozzászólást!
  • Szűrd ki hogy ne legyen szóköz stb... pl.:egy ilyen adat $nev=" "; felesleges. =)
    Mutasd a teljes hozzászólást!
  • A JavaScript ellenőrzés a biztonságot nem növeli, csak kényelmesebb a felhasználónak. Hogyha regisztráció vagy login formot akarsz csinálni, és maximális biztonságra törekszel, akkor hasznos még az ún. Flood védelem, vagyis a sok egymást követő oldallehívás tiltása.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Szeretnék egy biztongágos oldalt csinálni.

    Pl: egy név mezőt akarok levédeni.
    JavaScripttel ellenőrzöm, hogy ki van-e töltve.
    php-vel is ellenőrzöm a kitöltöttséget.
    Levédem Sql injection ellen.
    mysql_real_escape_string() és a htmlspecialchars()-al.

    Olvasgattam Xss-ről, és elvileg ellenőrizni kell mindent.
    Elvileg ez így ellenőrizve van, vagy csak én tudok keveset.

    Mit kell még tennem, hogy biztonságos legyen?

    Köszönöm a Tanácsokat.
    Mutasd a teljes hozzászólást!
abcd