CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

question sécurité

Pseudo supprimé
Pseudo supprimé 19 juin 2010 à 20:25:25

je me connecte toujours à la base de données avec PDO et mes requêtes sont toutes préparées,

de plus je sécurise systématiquement les variables $_POST avec :
addslashes(htmlspecialchars($_POST['variable']))

est-ce suffisant ? :hap:

deepblue
deepblue
Niveau 16
19 juin 2010 à 20:32:27

addslashes avec un magic_quotes à "on", ce n'est pas une bonne idée. Cela dit, je ne sais pas si il va sécuriser les données (je pense que oui, la doc en dira surement plus). Sinon il y a une méthode de pdo qui est quote() (va lire la doc aussi).

(Remarque en passant, on aime bien avec un "salut" et un "svp" dans les post, ça donne un peu plus envie de lire et j'aurais pris la peine d'aller fouille la doc pour ton cas)

Rudy
Rudy
Niveau 6
19 juin 2010 à 21:03:37

Humm ... Toujours question sécurité, et je poste ici afin d'éviter bêtement de créer un nouveau sujet.

Est-ce que le simple fait de préparer une requete et d'utiliser bindValue() pour associer une valeur $_GET[''] non sécurisé auparavant est suffisant ou pas pour éviter une INJECTION SQL ?

Par exemple :
$requete->prepare('SELECT * FROM table WHERE id = :id');
$requete->bindValue(':id, $_GET['id']);

Est-ce suffisant ou pas pour la sécurité à l'entré des données ? Après il est sur qu'il faut utiliser htmlspecialchars() ... pour l'affichage des données.

// --------------------------------------- \\

Autre chose aussi :

function listeCategories()
{
$categories = array();

$bdd = PDOProvider::getInstance();

$requete = $bdd->prepare('
SELECT *
FROM categories
ORDER BY id ASC
');
$requete->execute();

while ($donnees = $requete->fetch(PDO::FETCH_ASSOC))
{
$categories[] = $donnees;
}

$requete->closeCursor();

return htmlspecialchars($categories);
}

Est-ce que avec ce bout de code, htmlspecialchars() fonctionnera tranquillement ou alors c'est à ne pas faire ? Et donc faudrait l'utiliser pour l'affichage plutot ?
Je veux dire par là :
$donnees = listeCategorie();
echo htmlspecialchars($donnees['titre']);

Car j'utilise un moteur de templates, et je ne fais jamais de echo... :S Le foreach se fait dans le fichier .tpl et ca m'embete car je vois pas comment sécuriser les données.

Bon j'espère avoir été clair, sinon demandez moi, je sais, j'explique pas trop bien.

Merci par avance.

Fire_Storm
Fire_Storm
Niveau 10
20 juin 2010 à 10:28:01

Je ne connais que peu le système PDO mais bon je crois qu'au final ça ne change pas vraiment les choses.

Pour la sécurité, je dirais qu'il faut bien vérifier que les données textuelles le soient (htmlspecialchars partout, bah vi même sans intention de nuire ça peut foirer, il suffit que le type tape l'article (ou l"article, ça dépend des quotes utilisés)).

Pour addslashes et cie, il y a le soucis du magic_quotes actif ou non, effectivement si celui ci (qui apparemment sera supprimé donc je suppose obligera tout le monde à faire gaffe à ça) est actif et que vous faites un addslashes, vous allez faire double emploi.

Donc magic_quotes_machinchouette va faire de "l'article" -> "l\'article", et votre addslashes -> "l\\'article".

Bref ça va un peu merder à l'affichage.

Pour pallier à ce soucis, on peut vérifier que magic_quotes_gpc soit actif ou non (ATTENTION, dans le cas juste ci dessous, le ! signifie le CONTRAIRE, donc le cas où magic_quotes_gpc N'EST PAS ACTIVÉ ) :

if(!get_magic_quotes_gpc())

Alors addslashes sur la variable.

Outre les données textes, bien vérifier que les ID, restent bien des ID (donc que 1, ne devienne pas 1 AND 1=1 #, remarquez htmlspecialchars, et les fonctions anti-quotes n'auront pas le moindre effet sur ce genre d'injections (à moins que le chiffre lui même soit contenu entre des quotes mais là aussi on ne peux pas garantir la totale sécurité).

Rudy
Rudy
Niveau 6
20 juin 2010 à 10:34:24

Yep merci, j'ai ceci moi :
// Désactivation des guillemets magiques
ini_set('magic_quotes_runtime', 0);

if (1 == get_magic_quotes_gpc())
{
function remove_magic_quotes_gpc(&$value)
{
$value = stripslashes($value);
}

array_walk_recursive($_GET, 'remove_magic_quotes_gpc');
array_walk_recursive($_POST, 'remove_magic_quotes_gpc');
array_walk_recursive($_COOKIE, 'remove_magic_quotes_gpc');
}

Et sinon pour ma 2e partie ... ? =X

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment