Bonjour à tous,
Dans le cadre de mon projet, je souhaite avoir dans mon footer, une barre de discussion "instantané" sécurisée.
J'arrive à afficher les messages (stockés en BDD) et à en envoyer, fonctionnellement : la solution fonctionne.
Cependant je ne m'y connais pas trop en terme de sécurité sur les injections sql.
(Vous pouvez tester sur le jeu -> Haishin.fr mais il faut être connecté pour envoyer un message.)
Je veux dire par la que les messages sont envoyé par formulaire GET, sur une page php, qui envoie les données à la BDD tels qu'il les reçois.
Lors de l'affichage je fait un bête select, puis met le résultat dans un tableau.
La seule chose que j'ai implémenté pour le moment est un pattern HTML5 pour interdire les caractères spéciaux. (qui peut être supprimé par n'importe qui au moment de l'envoi)
Ma question est donc, si un joueur écrit comme message un truc du genre 'INSERT INTO......', est ce que cette requête risque d'être exécutée lors de l'affichage ?
Dans le cadre de mon projet, je souhaite avoir dans mon footer, une barre de discussion "instantané" sécurisée.
J'arrive à afficher les messages (stockés en BDD) et à en envoyer, fonctionnellement : la solution fonctionne.
Cependant je ne m'y connais pas trop en terme de sécurité sur les injections sql.
(Vous pouvez tester sur le jeu -> Haishin.fr mais il faut être connecté pour envoyer un message.)
Je veux dire par la que les messages sont envoyé par formulaire GET, sur une page php, qui envoie les données à la BDD tels qu'il les reçois.
Lors de l'affichage je fait un bête select, puis met le résultat dans un tableau.
La seule chose que j'ai implémenté pour le moment est un pattern HTML5 pour interdire les caractères spéciaux. (qui peut être supprimé par n'importe qui au moment de l'envoi)
Ma question est donc, si un joueur écrit comme message un truc du genre 'INSERT INTO......', est ce que cette requête risque d'être exécutée lors de l'affichage ?
Code PHP :
<?php
$query = sprintf("SELECT DES MESSAGES");
$result = mysql_query($query);
$message = array();
while($row = mysql_fetch_assoc($result)) {
array_push($message,$row);
}
Si oui, est ce qu'un mysql real escape string au moment de l'envoie et réception peut contrer cela ? Si non je ne vois pas quoi faire ?
D'avance merci.
EDIT: l'insertion s'effectue de cette manière :
Code PHP :
<?php
if (!($stmt = $mysqli->prepare("INSERT INTO discussion(XXXXXXXXX) VALUES (?,?,?,?)"))) {
echo "Echec de la préparation : (" . $mysqli->errno . ") " . $mysqli->error;
}