Jump to content
php.lv forumi

ideja kā samazināt lapas uzlauzšanas risku līdz minimumam


1mher3

Recommended Posts

Aleksejs, neņem ļaunā, bet man šķita ka tas būtu pašsaprotami, ne jau datubāze "zina", bet php kods, salīdzinot ierakstus dažādās tabulās un/vai datu bāzēs, izskaitļotu ka parole nav nomainīta izmantojot linku, ja datubāzē nebūtu atbilstošs ieraksts ar paroles maiņas pieprasījuma kodu un statusu "apstiprināts".

Edited by 1mher3
Link to comment
Share on other sites

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Tieši tajā apstāklī, ka DB "nezina" arī slēpjas tā sāpe. Pieliekot šādus apstiprinājuma kodus utt netiek pēc būtības risināta problēma par DB aizsardzību (tas gan nenozīmē, ka šādi kodi būtu nevajadzīgi, vienkārši tie risina citu problēmu - realizē aplikācijas loģiku).

Faktiski, ja esmu pareizi tevi sapratis, tad Tu vēlies izveidot Datubāzes datu integritātes pārbaudi (kur ar integritāti šajā brīdī tiek saprasta tieši datu atbilstība, vai neatbilstība aplikācijas loģikas prasībām). Tā neapšaubāmi ir vērtīga lieta, jo realizē vienu daļu no jebkura drošības risinājuma nepieciešamajām funkcijām: Protection (aizsardzības līdzekļi), Detection (drošības pārkāpumu atklāšana), Action (pasākumu kopums, kas tiek veikts pārkāpuma atklāšanas gadījumā). Taču tā nerisina Protection daļu.

Link to comment
Share on other sites

Es, protams, nelasīju visu spamu, bet man īsti nav skaidrs, kā tu to iedomājies. Tipa hakeris būs ticis klāt tavai datubāzei un tavam php skriptam, savukārt tur ieraudzīs visādus mainīgos un tabulu nosaukumus ar neloģiskiem nosaukumiem, un pie sevis nospriedīs: njā, veči, šito mums neatkost :(

Tā?

Link to comment
Share on other sites

var arī php piemeeram funkcijas rakstīt latviski..

 

function drukāt_kļūda($kļūdziņojums)
{
 echo $kļūdziņojums;
}
drukāt_kļūda('superkljuuda');

 

un jau ljaunajam hakerim buus gruuti saprast kas tajaa skriptaa ir rakstiits.

tā pat arī ar datu bāzēm un tabulām ...

Edited by Klez
Link to comment
Share on other sites

Tagad google māk tulkot arī latviski, so tas vairs nestrādās .. sorry par offtopic.

 

Bet ja nopietni, keywordi varētu būt 'hardened php', 'php taint' .. proti lai arī protams DB lietotāju izveidei un sistēmai ir jāpievērš uzmanība, tad faktiski vienmēr visas ķeskas ir "dinamiskajā" galā, proti php.. Ja jau tu reiz php iedot lietotāju un piekļuvi DB tad tas nozīmē, ka caur to teoretiski piekļūt citi :)

Link to comment
Share on other sites

piekrītu rozei

a par to guugli ,,, nu taa ir vesala anekdote ... :)

vakar seedeeju ebay.de un panjeemu googles paliidziibu ... traks var palikt :)

 

 

reku var pasmieties

 

a par lietu..

manupraat lielaakai daljai droshiibu jaanodroshina serverim.

respektiivi lai nav caurumains apacis un ugunssiena.

un ja veel apaci stiprina ar mod_security

+ virtuaalos hostus pareizi izveido (ierobežot php [un ne obligāti safe_mode])

 

un protams lai php skripts pats nav caurumains :)

ja ir caurumains php tad galvenais lai urķis netiek taalaak par konkreeto hostu .. :)

 

esmu kaut ko dzirdeejis par apache shell bet neko praatiigu netaa neatradu (kaadu paraugu vai aprakstu)

Link to comment
Share on other sites

Aleksejs, jā, tāda bij tā doma.

 

...

Šodien programmēju un pārprogrammēju, ievērojot jūsu ieteikumus...

apmēram stundu atpakaļ atdūros pret problēmu, ar datubāzes useru privilēģijām, nu nekādi nevaru izfunktierēt kur vaina...

 

uztaisīju 3 userus attiecīgi ar privilēģijām pirmais - tikai SELECT; otrais - tikai INSERT; trešais - tikai UPDATE,

pirmais un otrais smuki strādā, bet trešais, lai gan ir ar UPDATE atļauju, nestrādā (pēc sciptu izpildes datu bāzē ieraksts netiek izmainīts).

 

10 reizes gāju curi visam kodam cerēdams ieraudzīt kādu kļūdu, neatradu.

Tad ienāca prātā ka ar "UPDATE" privilēģiju varētu kautkas nebūt kārtībā. Pārbaudes nolūkā trešajam useram uzliku "all permissions" un viss strādā... bet tā nevaru atstāt.

Ko vēl bez UPDATE atļaujas ir jāatķeksē lai useram būtu tiesības tikai izmainīt ierakstus?

Link to comment
Share on other sites

uztaisīju 3 userus attiecīgi ar privilēģijām pirmais - tikai SELECT; otrais - tikai INSERT; trešais - tikai UPDATE,

no 3 useriem nav jegas ...

Jega ir no 2 ...

1. kam ir SELECT , UPDATE , INSERT --> tb web lapas useris

2. kam ir all privilgijas --> DB admins ...

--

nu ja teiksim ir saits kur useri neko nevar pievienot, tad 1 uzliec tikai SELECT

doma ir taada ka web saita userim ir tikai taas privilegijas, bez kuram saits nevar funkcionet ...

---

Peec sada principa DB userus veido lielakaa dalja no normaliem Web hostetajiem ...

 

P.S. + ja netiek izmantots, tad var vel norubiit sheel --> tb aizliekt no Web izpildiit Jebkadu areejo/iekseejo programmu ...

kaa arii --> vienmer sekot liidzi izmantojamo programmu BUG reportam, lai laiciigi varetu aizvert pamaniitos caurumus ...

---

Ja pats nehosteesi uz sava servera, tad nevajag iesprinkt ar tiem DB useriem ... veidojot lapu izmanto tikai vienu .... kad uzliksi uz Hosta tad paluudz lai tiktu izveidoti tie 2 useri ... (piem. DEAC to izdariis defolt. )

Link to comment
Share on other sites

No vairākiem useriem ir gan jēga, bet ne tādā veidā, ka vienam atļauts INSERT otram SELECT trešajam DELETE.

Jēga ir tad, ja ir izveidotas storētās procedūras/funkcijas kurām un vienīgi kurām ir atļauta pieeja attiecīgajam lietotājaam. Nekādu SQL vaicājumu pa taisno tabulās.

MySQL ļauj izveidot funkciju/procedūru, kas izpildās ar izveidotāja privilēģijām, šī lieta ļauj nedot lietotājam vispār nekādas pieejas tiesības konkrētajai tabulai, un piekļuvi nodrošināt tikai caur procedūru.

 

Tomēr šāda pieeja būs grūtāk sarunājama ar hostētāju.

Link to comment
Share on other sites


×
×
  • Create New...