IT NEWS PC REVUE PC FORUMInternet time: @588
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Stavte na víťaza

Servery Cisco UCS prekonali 45 rekordov za dva roky www.ucsservery.sk

Správca siete

Kompletný servis PC, serverov a sietí. Kvalita - rýchlosť - spokojní zákazníci. www.spravca-siete.sk

Kvalitné potreby pre psov

Široký výber potrieb a krmiva pre psy. Bezkonkurenčné ceny. Doprava zdarma! www.zoofast.sk

Hodinky - zásielkový predaj

Už o 2 dni môžete mať hodinky na Vašej ruke! CASIO, SEIKO, LORUS, 4YOU. www.casallia.sk

Štýlové hodinky za super ceny

Veľký výber hodiniek za super ceny. Všetko skladom, odosielame do 24 hod. www.redstone.sk

Ochrana PHP skriptov a vy

Zaslať odpoveď
AutorSpráva
pepek92
Užívateľ
Užívateľ

Založený: 21.01.2007
Príspevky: 660

PríspevokZaslal: Po 31.12.07 16:10Odpovedať s citátomNávrat hore

Ako sa bránite proti PHP injection vo svojich skriptoch? Aké metódy sú podľa vás účinné? Taktiež, ako sa bránite proti otváraniu nechcených PHP súborov ako sú súbory s prihlásením sa na DB a heslami? Diskusia...

Viac o PHP injection tu.

K PHP injection, include() iba cez premenné, súbory zašívam do priečinka a nepridávam do adresy príponu. Čo sa týka otvárania súborov používam metódu známu z phpBB:

kód:
V hlavnom súbore:
define ('niečo', true);

V includovaných súboroch:
if (!defined('niečo')) { exit; }
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
vl4kn0
Užívateľ
Užívateľ

Založený: 22.11.2007
Príspevky: 254
Bydlisko: 127.0.0.1

PríspevokZaslal: Po 31.12.07 20:13Odpovedať s citátomNávrat hore

hej to z phpBB robim aj ja:D potom este pouzivam jednu fciu a to:

kód:
function protect($var)
{
    foreach ($var as $k => $v)
    {
        $protected[$k] = addslashes($var[$k]);
    }
    return $protected;
}


co si vlastne ked mam nejake get a post premenne tak si ich takto osetrim a viem ze na mna ziadne sql injection neplatia.

potom este definujem premennu s priponov php

kód:
$phpEx = substr(strstr(__FILE__, '.'), 1);


a v tom subore includujem config kde mam udaje s databazov. a a hned po scripte fciou unset() zmazem premennu heslo a table prefix.
a nazaver ked potrebujem nieco nechat len pre adminov nejake filezz tak osetrujem hned na zaciatku tak ze vyberiem session z databazi a zistim aky ma rank. ak zly tak ho presmeruje na index.
a aby som nezabudol za kazdym sql query davam
kód:
or die(sprintf("Mysql query failed on file %s and line %d"), __FILE__, __LINE__);

_________________
PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber...
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailICQZobraziť autorove WWW stránky
chrono
Skúsený užívateľ
Skúsený užívateľ

Založený: 13.11.2007
Príspevky: 804

PríspevokZaslal: Po 31.12.07 21:09Odpovedať s citátomNávrat hore

Zobrazovanie chybových hlášok (podľa mňa) nie je najlepší nápad. Môžeš tým potencionálnemu útočníkovi prezradiť príliš veľa informácií.
Zobraziť informácie o autoroviOdoslať súkromnú správu
vl4kn0
Užívateľ
Užívateľ

Založený: 22.11.2007
Príspevky: 254
Bydlisko: 127.0.0.1

PríspevokZaslal: Po 31.12.07 21:20Odpovedať s citátomNávrat hore

chrono napísal:
Zobrazovanie chybových hlášok (podľa mňa) nie je najlepší nápad. Môžeš tým potencionálnemu útočníkovi prezradiť príliš veľa informácií.


no z toho co som dal. by si moc toho nevyrozumel. kedze si zober. nevies nazov tabulky ani databazi nic. poznas len subor. a to poznas aj na phpBB , drupal, phpfusion a mnoho dalsich, to by ma moc neiritovalo

_________________
PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber...
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailICQZobraziť autorove WWW stránky
audiotrack
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 17.11.2006
Príspevky: 680

PríspevokZaslal: Po 31.12.07 22:20Odpovedať s citátomNávrat hore

vl4kn0 napísal:
hej to z phpBB robim aj ja:D potom este pouzivam jednu fciu a to:

kód:
function protect($var)
{
    foreach ($var as $k => $v)
    {
        $protected[$k] = addslashes($var[$k]);
    }
    return $protected;
}


co si vlastne ked mam nejake get a post premenne tak si ich takto osetrim a viem ze na mna ziadne sql injection neplatia.

...
by si sa dosť okakal, ale musím ťa sklamať.. addslashes je slabá ochrana.. niekde som o tom čítal článok, keby ho nájdem tak ti ho pošlem.. išlo o to, že addslashes pracuje istým princípom, a dá sa ho oklamať tak, aby niektoré znaky zle "chápal"
Zobraziť informácie o autoroviOdoslať súkromnú správu
vl4kn0
Užívateľ
Užívateľ

Založený: 22.11.2007
Príspevky: 254
Bydlisko: 127.0.0.1

PríspevokZaslal: Ut 01.01.08 1:33Odpovedať s citátomNávrat hore

ako myslim si ze na nejaky sql injection staci
ale to neznamena ze adslashes nemozem zamenit za str_replace alebo ereg_replace
kde budem odchytavat iba text a cislice. ak budem odytavat iba stringy a cilice tak uz to nemoze nikto o....t. kazdemu podla jeho chuti ale kazdopadne. ziadna obrana nieje dokonala a vzdy sa najde nejaky spekulant ktory to dokaze "obist". napr. koho z vas napadlo ochranovat proti sql injection aj nazvy uploadovanych suborov? lebo ak niekto da vazov suboru ako select * from name_of_table where id = 0 -- ??lebo aj to je druh injections

_________________
PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber...
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailICQZobraziť autorove WWW stránky
pepek92
Užívateľ
Užívateľ

Založený: 21.01.2007
Príspevky: 660

PríspevokZaslal: Ut 01.01.08 10:41Odpovedať s citátomNávrat hore

Ešte ma napadla zaujímavá ochrana, okrem základného define z phpBB, čo som už vyššie písal, tak aj ochrana cez $_SERVER:

kód:
if (!defined('NIEČO') OR (
   $_SERVER['DOCUMENT_ROOT'] != '/www/***/public_html' && $_SERVER['DOCUMENT_ROOT'] != 'E:/***'))
   { exit; }


Sú tam dve rôzne "porovnávačky" s $_SERVER['DOCUMENT_ROOT'] pretože skript robím aj u seba na localhoste, ale aby to aj platilo na už skutočnom serveri...
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
Tominator
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 21.02.2007
Príspevky: 4009

PríspevokZaslal: Št 03.01.08 13:56Odpovedať s citátomNávrat hore

neriešim použijes .hdacess na to aby si útočník nemohol prezerať súbor s pripojovacími nastaveniami

2. rada použite aj obmedzenia pre robotov aby vam admin stranky neindexovali
Zobraziť informácie o autoroviOdoslať súkromnú správu
suchy
Čestný člen
Čestný člen

Založený: 17.10.2006
Príspevky: 1770

PríspevokZaslal: Št 03.01.08 14:12Odpovedať s citátomNávrat hore

citácia:
2. rada použite aj obmedzenia pre robotov aby vam admin stranky neindexovali
prave toto by som nerobil pretoze ten subor sa da velmi lahko vygooglovat a prezret, takze vies kde sa tie admin stranky nachadzaju. naopak ked o nich nemas ziadnu zmienku google ti ich neindexuje, ved ako by aj mohol ked sa k nim nevie prihlasit.

_________________
A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabberZobraziť autorove WWW stránky
vl4kn0
Užívateľ
Užívateľ

Založený: 22.11.2007
Príspevky: 254
Bydlisko: 127.0.0.1

PríspevokZaslal: Št 03.01.08 14:16Odpovedať s citátomNávrat hore

citácia:
a nazaver ked potrebujem nieco nechat len pre adminov nejake filezz tak osetrujem hned na zaciatku tak ze vyberiem session z databazi a zistim aky ma rank. ak zly tak ho presmeruje na index.

prvykrat citujem sam seba ale k veci. nemyslim ze google a ani iny bota je az taky mocny hackersky nastroj ze to dokaze obist cize to bude neindexovatelne

_________________
PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber...
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailICQZobraziť autorove WWW stránky
Tominator
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 21.02.2007
Príspevky: 4009

PríspevokZaslal: Pi 04.01.08 15:02Odpovedať s citátomNávrat hore

suchy napísal:
citácia:
2. rada použite aj obmedzenia pre robotov aby vam admin stranky neindexovali
prave toto by som nerobil pretoze ten subor sa da velmi lahko vygooglovat a prezret, takze vies kde sa tie admin stranky nachadzaju. naopak ked o nich nemas ziadnu zmienku google ti ich neindexuje, ved ako by aj mohol ked sa k nim nevie prihlasit.

spravne suchy beriem späť
Zobraziť informácie o autoroviOdoslať súkromnú správu
neopagan
Užívateľ
Užívateľ

Založený: 07.08.2006
Príspevky: 675

PríspevokZaslal: Ut 22.01.08 23:19Odpovedať s citátomNávrat hore

Hm, ja mam stranky robene tiez sposobom inckude, ale mam to takto:
kód:
switch ($page) {
case 1:
include_once "zoznam.php";
break;
case 2:
include_once "reklama.php";
break;
.
.
.
default:
include_once "uvod.php";
break;


Cize nemam tam priamo GET, ale po includovani URL vyzera nejako takto ... /index.php?page=2. Je aj tento sposob ohrozeny?

Na niektorych strankach, kde mam uploadnute clanky, vyzera URL takto: index.php?ID=2 /kde ID je vlastne ID clanku/

Viete mi poradit jednoduchy sposob, ako toto ochranit od SQL a kadejakych inych injection?

Vdaka, rad sa poucim...
Zobraziť informácie o autoroviOdoslať súkromnú správu
suchy
Čestný člen
Čestný člen

Založený: 17.10.2006
Príspevky: 1770

PríspevokZaslal: St 23.01.08 11:39Odpovedať s citátomNávrat hore

na tvoj konkretny skript je sql injection nepouzitelna. co sa tyka ochrany pred nim, mame tu trebars direktivu magic_quotes_gpc, alebo funkcie mysql_real_escape_string() pripadne addslashes(). zakladom ochrany je filtrovat uzivatelsky vstup, v pripade xss aj vystup. napriklad odfiltrovat nechcene tagy, ci atributy tagov, pripadne odfiltrovat vsetko okrem plaintextu. dalej je dobre mat osetrene chybove hlasenia, bo tie dokazu tiez dost napovedat a takto by sme mohli pokracovat. ohladom bezpecnosti webaplikacii je to na dlhsiu debatu, vysla o tom aj celkom zaujimava kniha Zranitelny kod.

_________________
A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabberZobraziť autorove WWW stránky
neopagan
Užívateľ
Užívateľ

Založený: 07.08.2006
Príspevky: 675

PríspevokZaslal: St 23.01.08 16:16Odpovedať s citátomNávrat hore

a co napr. php injection? ked niekto dosadi namiesto adresy index.php?page=2 nejaky svoj script napr. index.php?page=http://www.necomoje.ic.cz/hack.php ako je uvedene napr. tu http://www.chill.sk/clanky/php-injection/?

Alebo druhy pripad, ked mam uz spominane index.php?ID=2 /kde ID je vlastne ID clanku/ ? Jedna vec su vstupne data, ktore sa osetrit daju, ale druha vec je ak mi namiesto adresy dosadia kadejake svoje scripty, ktore potom includuje namiesto mojich a zobrazi sa obsah mojich scriptov /napr. pomocou show source.../
Zobraziť informácie o autoroviOdoslať súkromnú správu
kmsa
Užívateľ
Užívateľ

Založený: 26.07.2006
Príspevky: 1383
Bydlisko: Slovakia-Košice

PríspevokZaslal: St 23.01.08 17:36Odpovedať s citátomNávrat hore

ak dosadi namiesto page=2 page=http://www.necomoje.ic.cz/hack.php a ak je script cez switch tak potom hodi na uvod.php

a v tom id ak je prenasane napr: id clanku ktore ma byt otvorene tak by najjednoduchsie riesene by bolo ze preskumas to ci to je ciselna hodnota a nech tam niesu takmer ziadne znaky a dalsie a az potom to das prejst cez databazu + aj tam to dajak osetri

ale tam uz naj niekto iny hodi navod

_________________
CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých
Zobraziť informácie o autoroviOdoslať súkromnú správuICQSkype
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF