Kezdőlap › Fórumok › Programozás › PHP
- This topic has 234 hozzászólás, 31 résztvevő, and was last updated 18 years telt el by
xcut.
-
SzerzőBejegyzés
-
2006-08-21-22:35 #2024618
Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek pl
Code:mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);, vagy át kell addslashoznom?
Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.2006-08-22-00:55 #2024619goraki wrote:Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek plCode:mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);, vagy át kell addslashoznom?
Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.Ha a magic_quotes_gpc be van kapcsolva, akkor nem kell, bár én azért ha számot akarok így berakni, előtte kiszedem egy preg_replace()-cel a nem oda való dolgokat. (valami ilyesmi mintával „#[^0-9]#i”).
De! A PHP 6-ban nem lesz magic_quotes_gpc. Erre készítsd fel a programod!2006-08-23-15:07 #2024620goraki wrote:Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek plCode:mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);, vagy át kell addslashoznom?
Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.Talán a legcélszerűbb, valami hasonlót csinálni:
Code:$text = $_POST[‘text’];
if (!get_magic_quotes_gpc())
$text = addslashes($text);Márcsak azért is, mert mi van akkor, ha olyan gépre kerül a honlap, ahol ki van kapcsolva a magic_quotes_gpc?
Számoknál meg a minimum, amit illik egy konverzió
Code:$number = (int)$_POST[‘darab’];De kérdeznék én is, ha már szóbakerült az sql injection.
Az addslashes() mennyire véd ellene?Jelenleg én valami hasonló mehanizmust használok:
Code:$text = $_POST[‘text’];
if (!get_magic_quotes_gpc())
$text = addslashes($text);if (!CheckForInjection($text)) {
exit;
}Ahol a CheckForInjection függvény még nem csinál semmit, éppen azért mert még nem olvastam utána, hogy mi az amire az addslashes után még figyelni kell.
Gondolok itt olyasmikre, hogy pl a neve helyett beíir valami komplett SQL utasítást
INSERT INTO …
GRANT…
És hasonlók2006-08-27-15:58 #2024621én valahogy így oldottam meg, és elméletileg működik:
Code:$needed_from_get=array( … );
foreach($needed_from_get as $nfg){
$nfg[‘value’]=isset($_GET[$nfg[‘get name’]])?$_GET[$nfg[‘get name’]]:$nfg[‘default’];
if($nfg[‘numeric’])
$nfg[‘value’]=is_numeric($nfg[‘value’])?$nfg[‘value’]:$nfg[‘default’];
}
# ez megismételve meg 2x, a $_POST és a $_COOKIE tömbbel isEzek előtt természetesen használok egy get_magic_quotes_gpc() ellenőzést is, és ha nincsen bekapcsolva, akkor mindhárom tömbön végigfuttatom az addslashes() fgv-t.
Ennek elégnek kell lennie. Ha nem, akkor még az adatbáziskezelő modulodban minden beszúrt változóra használhatod a *sql_escape_string() függvényeket, bár szerintem ez felesleges, mert dupla backslash-elést csinálsz vele. A GRANT és az ilyesmikre való szűrés meg nem a legjobb ötlet, mert mi van ha a motort egy SQL-lel foglalkozó fórumra használják? Vagy mi van akkor, ha egy elvetemült textfile-ra így egy adatbázismotort? (feltéve, hogy kiadod a forrását)Az SQL inject különben csak ritkán működik, és nagyot kell bakizni hozzá.
Egy motor írásakor a hangsúly inkább ott van, hogy ne tudjonak puffer túlcsordulást kihasználni, illetve, hogy ne tudják kijátszani a te általad írt jogrendszert (tehát admin jogosultságokat szerezni).2006-08-29-21:56 #2024622xcut wrote:Az SQL inject különben csak ritkán működik, és nagyot kell bakizni hozzá.
Egy motor írásakor a hangsúly inkább ott van, hogy ne tudjonak puffer túlcsordulást kihasználni, illetve, hogy ne tudják kijátszani a te általad írt jogrendszert (tehát admin jogosultságokat szerezni).Puffer túlcsordulásra mik a tipikus bakik?
A jogrendszerrel kapcsolatban afféle házibarkács megoldás van most, nemtudom mennyire jó, valszeg elég buher 🙂
Nagyjából így néz ki, minden védeni kívánt oldal eleje:$_min_user_level = 5;
require_once „auth_check.php”;Az auth_check.php pedig ezt tartalmazza:
Code:= $_min_user_level)) {
;
}
else {
Header(„Location: login.php?lang=”.$_GET[‘lang’].”&action=login”);
}
?>Tudom, hülyén van az if 🙂
És persze register_globals = off2006-08-30-12:02 #2024623MyCroft wrote:Puffer túlcsordulásra mik a tipikus bakik?A jogrendszerrel kapcsolatban afféle házibarkács megoldás van most, nemtudom mennyire jó, valszeg elég buher 🙂
Nagyjából így néz ki, minden védeni kívánt oldal eleje:… code …
Tudom, hülyén van az if 🙂
És persze register_globals = off1.) a puffer túlcsordulásra akkor alapoznak, ha a PHP-ben van hiba, és a te programod lehetőséget ad a kihasználására.
2.) én komolyabban vettem a dolgot, a biztonsági rendszerem nagyjából az unixos modell és az iptables keveréke ^^ bővebben, ha kiadom az első publikus alpha-t.2006-08-30-16:01 #2024624xcut wrote:2.) én komolyabban vettem a dolgot, a biztonsági rendszerem nagyjából az unixos modell és az iptables keveréke ^^ bővebben, ha kiadom az első publikus alpha-t.Valahogy sejtettem, hogy ennél csak komolyabb megoldás létezik 🙂
De ez egy konkrét progiban lesz, nem egy általános motor része, oda nyilván kifinomultabb megoldás kell. Itt csak annyit kell tudnia, hogy ne érhessen el bárki bármit. (felhasználók -> csoportok és a csoportoknak van biztonság szintje).
Így pl hírlevelet küldeni csak az tud, aki olyan csoportban (is) van, aminek a szintje legalább 5-ös.
Tehát a cél csak ennyi.Igazából az lenne a kérdésem, hogy van-e benne vmi ordító hiba (akár a kódban, akár az elképzelésben), amit kihasználva vki kijátszhatja a hitelesítést.
2006-09-22-20:54 #2024625Hali mindenkinek…
szerettem volna egy vizualis megerositest hasznalni egy formnal. Talaltam is egy jo cuccot. Captcha a neve, van belole pearl modul is, csak a baj, h az interware szerveren nincsen teleiptve. Szoval egyeb megoldashoz folyamodtam. Talaltam egy oldalt, ahol a sourcet le lehet tolteni es effektive ugy hasznalni, minth normalis pear modul lenne. Azomban az interware szerveren nem mukodik jol.
Csatoltam a kepet, h ti is lassatok, mi a bajom. A betuk egymasra vannak csuszva. Szerintetek ezt hogyan lehetne korrigalni. Minden mas szerveren tokre jol mukodott meg az ingyenes webhostokon is.
http://rtl-lapeercounty.org/test/captcha.htmlDani
2006-09-28-16:55 #2024626Ok.. Nem tudtam kitalalni mi lehet a baj, de kitalaltam valami mast, amivel egy formot eleg jol lehet vedeni. Itt van a script:
Code:Majd a formon belul valahol letrehozni egy szimpla text inputot user_code name attribbal es egy ahol az img.php a file, ami tartalmazza a fenti kodot.
Amikor elkuldod a formot anyit kell tenned, hogy megvizsgalod, hogy :Code:if(session_is_registered($_POST[‘user_code’])){ #lehet, hogy $_POST[‘user_code’] helyett csak $user_code ot kell #irnod. Ez a register_globals tol fugg
do whatever you want
session_unregister(„user_code”); #session torlese
}else{
error handling
}Ha akarod akkor hozzaadhatsz valami session_timeout cuccost, ha megnagyobb biztonsagot akarsz. Ne felejtsd el torolni a sessiont!!
Ha a sessionokkel meggyult a bajod, mit nekem egy szerveren, akkor megteheted, hogy letrehozol egy konyvtarat linux szereveren 777 chmoddal vagy szimplan egy foldert windows serveren. Majd az img.php filet modositod, hogy hozzon letre egy $num nevu filet es a datumot, idot irja bele. Majd amikor teszteled a formot meg kell nezni, h a file letezik is file_exists functionnal es ha igen, akkor a datum, idopont nem kisebb mint a mostani – 15 perc. Majd torlod a filet.
2006-10-18-19:35 #2024627Készítettem egy számláló féleséget, ami egy ilyet valósít meg:
Csatolom a kódot, hátha mást is érdekel, ne felejtsd átnevezni zip-re és kicsomagolni -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz