Comment PHPBB sécurise les requêtes SQL ?

WRInaute occasionnel
salut à tous :)

voilà je voudrais savoir comment sont sécurisée les requetes sql sur PHPBB.

Je m'explique : je voudrais creer une fonction du meme genre que celle de PHPBB permettant de "préparer" des chaines de caractères envoyée par méthode POST par les visiteurs.

sur phpbb je vois ca :

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;');

function prepare_post(blablabla)
{
$message = preg_replace($html_entities_match, $html_entities_replace, $message);
}

et après il l'utilise comme ca :

$message = prepare_message(trim($message)

et je crois que c'est tout :S

je voudrais savoir si ca, ca me suffit pour les visiteurs qui envoie des données via un formulaire , c'est sécurisé niveau injection sql ?

parce sur phpbb j'ai pas vu de mysql_real_escape_string ou de htmlentities :p

aussi, assez souvent, j'ai des truc de genre "select blabla where id=$id" (par exemple).

je voudrais savoir si ca a de l'importe de mettre des guillements simple autour de $id et si, dans ce cas, une verification avec is_numeric() suffit à sécuriser totalement ce genre de requete ?

une dernière question :

quelle est la différence entre :

if($var != NULL)
if(isset($var))
if(!empty($var))

?? sachant que je veux vérifier si des données pasé dans l'url ou par formulaire sont bien "remplie" :)

voilà, c'est a peu près tout :).

en gros je cherche à sécuriser mes requete sql, et à avoir plus d'info sur isset, empty et !=NULL :)
merci d'avance !!
 
WRInaute occasionnel
pour vous expliquer concretement la situation, nous sommes entrain de refaire completement notre site, et nous envisageons dans quelques mois de changer d'hebergeur.

un des "hic" est que l'hebergeuer actuel a mis à of les magic_quote contraire à notre potentiel future hebergeur (celeonet).

donc voilà ce que je pensait faire :

# Pour les requete par "id" :

j'ai une url du genre article.php?id=15

avec une requete du genre : select * from table where id=$id .

est ce que faire :

if(ctype_digit($id))
{
requete sql ...
}

C'est suffisant dans ce cas ?

# Pour une requete qui insere/modifie des chaine de caractères proposée par les visiteurs :

function prepare_message($var)
{
$html_entities_match = array('#&(?!(\#[0-9]+Wink)#', '#<#', '#>#');
$html_entities_replace = array('&amp;', '&lt;', '&gt;');

$message = preg_replace($html_entities_match, $html_entities_replace, $var);

return $message;
}

function securisation($var)
{
if( !get_magic_quotes_gpc() )
{
$message = mysql_real_escape_string($message);
}

return $message;
}


et enfin :

$message = prepare_message(securisation($message));

mysql = insert into table value("$message)


pensez vous que c'est suffisant niveau sécurité ca ?

merci d'avance !
 
Discussions similaires
Haut