Delcedo PHPLib
Manuel

Classe OString

Permet de gérer les entrées / sorties en diminuant les risques potentiels de failles de sécurité

Description

La classe OString permet de gérer les entrées ($_GET, $_POST...) pour pouvoir les utiliser dans différents milieux de destination (HTML, MySQL) en évitant systématiquement les failles XSS et l'injection de code à des endroits non prévus.

Utilisation générale

Le cas d'utilisation de base est le suivant : un formulaire est mis en place sur une page web. On traite les informations envoyés en utilisant la classe OString qui permet de gérer l'utilisation de la chaîne à sa guise ; ici on l'utilise pour afficher du texte HTML et pour sauvegarder les valeurs dans le formulaire.

Premier exemple
Entrez votre nom :
Un petit texte, pouvant être du BBCode :

Code PHP
<?php
  $nom 
= new OString($_POST["nom"]);
  
$txt = new OString($_POST["textarea"]);
?>
<form action="" method="post">
<div>
  Entrez votre nom : <input type="text" name="nom" <?php $nom->form_value("Votre nom"?> />
  <br />
  Un petit texte, pouvant être du BBCode :
  <br /><textarea name="textarea" rows="6" cols="50"><?php echo $txt->get_html(); ?></textarea>
  <br /><input type="submit" value="Tester !" />
</div>
</form>

<?php if(!$txt->is_empty()){ ?>
<div>
  <p>Bonjour <?php echo $nom->get_html(); ?> !</p>
  <p><?php echo $txt->get_bbcode_full(); ?> !</p>
</div>
<?php ?>
Utilisation avec MySQL

Dans MySQL, l'utilisation d'OString permet d'éviter les failles d'injection de code SQL. L'exemple suivant illustre le problème posé.

Second exemple
<?php

mysql_connect
("localhost""login""mdp""bdd");

$pseudonyme "toto";
$mot_de_passe "' OR '' = '";

$login = new OString($pseudonymetrue);
$mdp = new OString($mot_de_passetrue);

// Requête protégée :
echo "SELECT * FROM users WHERE login = '".$login->get_sql()."' AND mdp = '".$mdp->get_sql()."'";
// SELECT * FROM users WHERE login = 'toto' AND mdp = '\' OR \'\' = \''


// Sans l'utilisation de la classe OString, requête non protégée :
echo "SELECT * FROM users WHERE login = '".$pseudonyme."' AND mdp = '".$mot_de_passe."'";
// SELECT * FROM users WHERE login = 'toto' AND mdp = '' OR '' = ''

?>
Delcedo.com | Creative Commons License