Jump to content
php.lv forumi

get_magic_quotes_gpc un stripslashes


renathy

Recommended Posts

Man te vienā grāmatā ir kods, kura nozīmi es ne līdz galam saprotu (jā, ir google, bet tas vēl nepalīdz...):

Kods izpildās sākumā, bet kāda tam īsti jēga?

 

if (get_magic_quotes_gpc()) //ko nozīmē "magic quotes", saprotu, ka tas ir kkas ar apache

{

function _stripslashes_rcurs($variable, $top = true) //rkursīvi saliek stripslashes visim get/post, vai??? a kāpēc?

{

$clean_data = array();

foreach ($variable as $key => $value)

{

$key = ($top) ? $key : stripslashes($key);

$clean_data[$key] = (is_array($value)) ?

stripslashes_rcurs($value, false) : stripslashes($value);

}

return $clean_data;

}

$_GET = _stripslashes_rcurs($_GET);

$_POST = _stripslashes_rcurs($_POST);

// $_REQUEST = _stripslashes_rcurs($_REQUEST);

// $_COOKIE = _stripslashes_rcurs($_COOKIE);

}

Link to comment
Share on other sites

Skaidrs... tad man nepieciešams padoms par datu validēšanu. Vai šeit kkas trūkst / ir nepareizi pilnai iespējamai datu validēšanas kopai?

 

1) Ja tas ir ievads formā, kuru postē, tad jāveic sekojošas validācijas u.c. lietas:

a) ja ir ierobežota atļauto simbolu kopa (piemēram, login) -> tad izmantot regulārās izteiksmes un neļaut "ļaunos" simbolus

a2) ja ir atļauti tikai skaitļi -> tad izmantot intval, doubleval u.tml.

b) izmantot mysql_real_escape_string

c) izmantot trim

d) ??? vēl kas pilnam komplektam???

 

Ko īsti darīt ar addslashes, stripslashes, vai tie vajadzīgi?

 

2) Ja iegūst datus no datu bāzes, tad liek klāt htmlspecialchars.

Pie tam - vai to liek vienmēr, pat tad ja ir pārliecināts, ka dati nesatur "launos" simbolus. Piemēram, zinu, ka tur jābūt skaitlim. Vai piemēram, zinu, ka tajā laukā rakstu iepriekš pārbaudītu datumu formā 12.12.2009, vai izgūstot arī liek htmlspecialchars? Nu kāda ir tā prakse...?

 

3) GET parametriem:

a) pārbaudes uz atļautiem simbolie

b) intval, ja tikai skaitļi

c) ??? vēl kas pilnam komplektam ???

Edited by renathy
Link to comment
Share on other sites

Principā, ja arī grāmata ir paveca, pieeja ir pareiza. Es datu filtrēšanai izmantoju tādu pašu pieeju, funkcija get_magic_quotes_gpc tieši to arī pārbauda, vai ir vai nav ieslēgta automātiskā esceipošana un tikai gadījumā ja ir tad viņas automātiski pieliktos slešus (automātiskā esceipošana) noņemam un veicam savu manuālo filtrēšanu. Būtībā ir tā:

 

function secure($value) {
  if (get_magic_quotes_gpc) { //Pārbaudām vai ir ieslēgta automātiskā esceipošana
     //Veicam stripslashes vai rekursīvi vai vienkārši mainīgajam atkarīgs no situācijas (šeit vienkāršais variants).
     $value=stripslashes($value);
  }

  //Tālāk veicam mysql_real_escape_string() vai rekursīvi vai kā atkarīgs no tā ko vēlas panākt.

  return $value;
}

 

Kodā ir parādīta tikai doma. Jādara tas tāpēc jo nevar zināt vai izveidotā mājas lapa kādreiz nestāvēs uz servera kur ir ieslēgta automātiskā saņemto datu esceipošana, ja tādā gadījumā neizdarot stripslashes palaidīsi mysq_real_escape_string, tad sanāks ka būs veikta dubulta esceipošana.

Edited by Maris-S
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...