Jump to content
php.lv forumi

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


1mher3

Recommended Posts

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

paldies par jūsu atbildēm un ieteikumiem.

 

tatad taisīt nekonenozīmējošus tabulu un aiļu nosaukumus nev pilnīgi nekādas jēgas?

 

protams $_GET un $_POST tiek izmantots

man uztaisīts tā:

 

ar $_GET pirms funkciju izpildes ir

if ($_GET[identifikators]='vajadziigaa veertiiba')

 

ar $_POST...

$x=strip_tags($_POST[x]);

 

vai ar to pietiek?

 

vai ir zināms vienkāršs veids/scripts kā detaktēt standarta uslauzšanas metodu izmantošanas mēģinājumus?

ideja .htaccess failā automātiski ierakstīt: deny from xxx.xxx.xxx.xxx

Edited by 1mher3
Link to comment
Share on other sites

Ar to nepietiek gan.

= vietā jālieto ==

strip_tags vietā ir jālieto mysql_real_escape (ja lieto MySQL).

Kā arī, kā jau Grey_Wolf teica, vajag pārbudīt datu tipus.

informāciju par mysql_real_escape funkciju php.net neatradu. Ko tas zvērs dara?

 

Grey_Wolf

...

Vienmer parbaudiit ienakoshos datus --> ja var sanjemt tikai INT tad ienakosos datus parkonverteet par INT

...

man tumša bilde kādā veidā to pārbaudi izdarīt.

Edited by 1mher3
Link to comment
Share on other sites

vel var piebilst ka visiem datiem velams sakumaa 'uzriidiit' trim() f-ju .. tas ljaus izvairiities no tuksiem datiem (nonjem tuksumus no sakuma un beigaam )

 

P.S. protams jaskataas vai Vienmer to vajag , bet kaa raada prakse 90% vajag gan

Edited by Grey_Wolf
Link to comment
Share on other sites

Grey_Wolf tiešām minēja lielāko daļu visu, ko vajadzētu noteikti.

Kautkur mineja strip_tags(), var arī to, bet ir gadijumi, kad lietotājam var ļaut rakstīt tagus lai būtu skaidrs, ko gribēja uzrakstīt (protams, tad jūtīgos simbolus es aizstāju ar kodu, tādā veidā nesamaitājot stringa vizuālo).

Par INT esmu ar visām četrām, ja to var.

Vēl tikai varu teikt, ka pat tad, ja formai ir hidden lauki, arī tos obligāti vajag pārbaudīt.

Varbūt šis aplami, bet labāk ja register_globals off visu.

Neskopoties ar mainīgo definēšanu+if(isset()).

Debugojot errori ieslēgti, uz hosta jau izslēgti.

Par Toms makeSafe()...katrs dara kā grib, tikai jēga manuprāt būtu ja tajā makeSafe() ir kas vairāk kā jau standarta funkcija.

Link to comment
Share on other sites

Es saprotu, ka nav jēgas dublēt gatavas PHP funkcijas un to nedaru. Bet nevajag pie šī "likuma" turēties, ja tas apgrūtina strādāšanu. Dažreiz ir pieļaujami izņēmumi.

Arī Squad dotajā linkā ir funkcija, kas "dublē" php funkciju. Manuprāt pieļaujama.

function isValidFileName($file) {
/* don't allow .. and allow any "word" character \ / */
return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file);
}

Turpat atrodama arī šada funkcija, kādas veidošanu neatbalstu.

function isValidAccountNumber($number) 
{
return is_numeric($number);
}

 

Papildinot mounkuls:

strip_tags() vajadzētu lietot tikai tur, kur tiešām nepieciešams atbrīvoties no tagiem. Tātad, saglabājot DB lietojam mysql_real_escape_string() un izvadot lietojam htmlentities(). Un nebūs jāuztraucas par ļauniem simboliem.

register_globals off - tas ir pareizi un tā vienmēr jābūt!

error_reporting(E_ALL); - lai rāda visus kļūdu paziņojumus, arī par nedefinētiem mainīgajiem.

Link to comment
Share on other sites

Par tiem dīvainajiem tabulu nosaukumiem - tiešām jēgas nekādas, padomā loģiski - tev db glabājas server pusē, to izmanto tikai php skripts... No klienta puses neviens nevar tikt tavām tabulām klāt, ja vien neesi atstājis caurmu priekš "SQL injection"! To gan pastudē - php security! Nu ir savi pasākumi, kas jāveic drošībai, bet tur jāpalasa tiešām internetā literatūra... Pats no galvas nezinu! :) Tikai jādomā arī loģiski līdzi. Sašifrēt kodus php galā - kāda jēga? Lai sarežģītu dzīvi saviem programmētājiem? Drīzāk drošības pasākums būtu, teiksim pieprasījumus caur GET un POST pārvērst, piemēram, no šāda:

"?page=album&content_id=56&editable=false" vai es nez ko tur ... uz "?q=zzKE89xK10O7ertYc4cla9001MmBbNUerQ" - nu jo mazāk info dod gala lietotājam, jo labāk, bet vēl var izmantot user friendli urlus, piemēram /albums/this_years_top_20 - kaut kā tā, tas URL tev pasaka par lapas Contentu, bet neko par skriptēšanas valodu un tai nododamajiem mainīgajiem, jo tā var apstrādāt šo urlu pa savam.

Vēl tu vari JavaScript nokodēt ONE WAY (man šķiet, Google ko tādu dara), tā lai neko nesaprot, kas tur rakstīts - izkost jau var, bet tas prasa laiku un baigo urbšanos... Vēl kā jau teica - visus templeitus un server puses skriptus nes ārpus web direktorijas, lai nav iespējams tiem piekļūt tieši caur pieprasījumiem, web direktorijā atstāj index failu, htaccess failu, bildes (images), files (lietotāja uploadotie faili) un css arī vari tur atstāt, respektīvi - lietas, kas ir tieši paredzētas priekš klienta izmantošanai.

100% drošu jau neko nevar padarīt, bet labāk ir 95% drošs, nekā 50%, piemēram! :)

Link to comment
Share on other sites

paldies par skaidrojumiem.

Daudz ko svariigu un jaunu iemaaciijos.

 

ja visu sapratu pareizi, lai _GET izmantotu droshi, vajag

 

http://adrese.lv/index.php?lapa=sakums

 

if ($_GET['lapa']=='sakums')

{

$lapa = (int)$_GET['lapa'];

include ("../faili/sakums.php");

}

 

un prieksh _POST vajag

 

$vards = (int)mysql_real_escape_string(trim(strip_tags($_POST['vards'])));

vai, ja tekstaa pielaujami tagi,

$koments = (int)mysql_real_escape_string(trim($_POST['koments]));

 

un prieksh izvades

$koments = stripslashes(mysql_result(mysql_query("SELECT koments FROM komentari WHERE komentaid='1'"), 0));

 

vai kautko svariigu neesu palaidis garaam?

Edited by 1mher3
Link to comment
Share on other sites

Pāris lietas, ko nepamanīju pieminam.

Sadalīt datubāzes lietotāju lomas pa tādiem lietotājiem, kā skatītājs, rakstītājs dzēsējs utt.

Datubāzei slēgties klāt tikai ar šiem lietotājiem.

Šiem lietotājiem atļaut izpildīt tikai konkrētas saglabātās procedūras (mysql gadījumā šis).

Neatļaut šiem lietotājiem izpildīt nekādas citas darbības pa tiešo ar tabulām, bet visu funkcionalitāti realizēt tikai ar iepriekšdefinētajām funkcijām.

Vadoties pēc aplikācijas loģikas, izmantot to vai citu lietotāju darbam ar datubāzi.

Link to comment
Share on other sites


×
×
  • Create New...