Implémentation Technique de la Sécurité
Autorisation et Contrôle d'Accès
Code :
session_start();
if (!isset($_SESSION['unique_id'])) {
header("location: ../login.php");
}
Authentification des Utilisateurs
Code :
$email = mysqli_real_escape_string($conn, $_POST['email']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
if (!empty($email) && !empty($password)) {
$sql = mysqli_query($conn, "SELECT * FROM users WHERE email = '{$email}'
AND password = '{$password}'");
if (mysqli_num_rows($sql) > 0) {
$row = mysqli_fetch_assoc($sql);
$_SESSION['unique_id'] = $row['unique_id'];
echo "success";
} else {
echo "Email or password is incorrect!";
}
} else {
echo "All input fields are required!";
}
Intégrité des Données
Code
$user_id = mysqli_real_escape_string($conn, $_GET['user_id']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
Gestion des Mots de Passe
Code :
$password = password_hash($password, PASSWORD_DEFAULT);
$sql = mysqli_query($conn, "INSERT INTO users (email, password) VALUES ('{
}
Présentation des Tests Unitaires pour le Système KayCas
Introduction
Pour assurer la qualité et la sécurité du système de chat KayCas, des tests
unitaires ont été réalisés sur les différents composants du système. Les tests
unitaires permettent de vérifier que chaque fonction individuelle fonctionne
correctement, ce qui est essentiel pour garantir la fiabilité et la robustesse de
l'application.
Objectif des Tests Unitaires
L'objectif des tests unitaires est de valider le bon fonctionnement de chaque
unité de code de manière isolée. Ces tests aident à détecter les bugs et les
anomalies dans les fonctions spécifiques, assurant ainsi que chaque composant
du système fonctionne comme prévu avant d'être intégré dans l'ensemble du
système.
Mise en Œuvre des Tests Unitaires
Pour illustrer comment les tests unitaires ont été réalisés pour KayCas, nous
allons examiner des exemples de tests unitaires pour les principales
fonctionnalités du système.
Exemple 1 : Test de la Fonction de Connexion
login.php
<?php
session_start();
include_once "config.php";
$email = mysqli_real_escape_string($conn, $_POST['email']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
if (!empty($email) && !empty($password)) {
$sql = mysqli_query($conn, "SELECT * FROM users WHERE email = '{$email}'
AND password = '{$password}'");
if (mysqli_num_rows($sql) > 0) {
$row = mysqli_fetch_assoc($sql);
$_SESSION['unique_id'] = $row['unique_id'];
echo "success";
} else {
echo "Email or password is incorrect!";
}
} else {
echo "All input fields are required!";
}
?>
Test Unitaire : LoginTest.php
use PHPUnit\Framework\TestCase;
class LoginTest extends TestCase {
public function testSuccessfulLogin() {
$_POST['email'] = '
[email protected]';
$_POST['password'] = 'password123';
include 'login.php';
$this->expectOutputString('success');
}
public function testIncorrectPassword() {
$_POST['email'] = '
[email protected]';
$_POST['password'] = 'wrongpassword';
include 'login.php';
$this->expectOutputString('Email or password is incorrect!');
}
public function testEmptyFields() {
$_POST['email'] = '';
$_POST['password'] = '';
include 'login.php';
$this->expectOutputString('All input fields are required!');
}
}
Exemple 2 : Test de la Fonction d'Envoi de Message
sendMessage.php
<?php
session_start();
if (isset($_SESSION['unique_id'])) {
include_once "config.php";
$outgoing_id = mysqli_real_escape_string($conn, $_POST['outgoing_id']);
$incoming_id = mysqli_real_escape_string($conn, $_POST['incoming_id']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
if (!empty($message)) {
$sql = mysqli_query($conn, "INSERT INTO messages (incoming_msg_id,
outgoing_msg_id, msg) VALUES ({$incoming_id}, {$outgoing_id},
'{$message}')");
if ($sql) {
echo "Message sent successfully";
} else {
echo "Message sending failed";
}
} else {
echo "Message field is required";
}
} else {
header("location: ../login.php");
}
?>
Test Unitaire : SendMessageTest.php
use PHPUnit\Framework\TestCase;
class SendMessageTest extends TestCase {
public function testSendMessage() {
$_SESSION['unique_id'] = 1;
$_POST['outgoing_id'] = 1;
$_POST['incoming_id'] = 2;
$_POST['message'] = 'Hello, how are you?';
include 'sendMessage.php';
$this->expectOutputString('Message sent successfully');
}
public function testEmptyMessageField() {
$_SESSION['unique_id'] = 1;
$_POST['outgoing_id'] = 1;
$_POST['incoming_id'] = 2;
$_POST['message'] = '';
include 'sendMessage.php';
$this->expectOutputString('Message field is required');
}
public function testNotLoggedIn() {
$_SESSION = []; // Clear session
$_POST['outgoing_id'] = 1;
$_POST['incoming_id'] = 2;
$_POST['message'] = 'Hello, how are you?';
ob_start();
include 'sendMessage.php';
$output = ob_get_clean();
$this->assertStringContainsString('location: ../login.php', $output);
}
}
Résultats des Tests Unitaires
Les tests unitaires réalisés ont permis de valider le bon fonctionnement des
différentes fonctionnalités critiques de KayCas. Chaque test unitaire a été
exécuté avec succès, garantissant que les fonctions individuelles répondent aux
attentes et se comportent comme prévu.
Conclusion
Les tests unitaires sont une partie essentielle du processus de développement du
système de chat KayCas. Ils permettent de s'assurer que chaque composant du
système fonctionne correctement en isolation avant d'être intégré. En réalisant
des tests unitaires approfondis, nous avons pu garantir la qualité, la fiabilité et la
sécurité du système, tout en répondant aux exigences de sécurité et de
fonctionnalité définies pour KayCas.