Vous êtes sur la page 1sur 13

République du Burundi

Master en Génie
Ministère de
Informatique
l’Éducation Nationale
et de la Recherche Année académique
Scientifique
2019-2020
Université du Burundi
Faculté des Sciences de
l’Ingénieur

MEMOIRE
Présenté à la

Faculté des Sciences de l’Ingénieur (FSI)


En vue de l’obtention du

MASTER
en

Génie Informatique
Par
BORIBO KIKUNDA Philippe

Mise en place d’une application informatique


sécurisée pour la gestion du système
pénitentiaire de la République Démocratique
du Congo

Soutenu le 07/05/2021, devant le jury composé de :

Pr NDIKUMAGENGE Jérémie Président


Dr SAHINGUVU William Vice-Président
Pr MANIRABONA Audace Sécrétaire
Dr NDAYISABA Longin Directeur
Dr MUKESHIMANA Michèle Membre
Quels sont les 4 sous langages de SQL ?
SQL : LDD, LCD, LMD, LCT

1. SolarWinds Database Performance Analyzer (DPA)


SolarWinds DPA est une solution puissante d’optimisation des
performances des bases de données multidimensionnelles qui prend en
charge les bases de données PostgreSQL, MySQL, IBM DB2,
Amazon Aurora, SAP ASE, Oracle, Microsoft SQL Server, MariaDB
et Azure SQL. Elle se concentre sur l’identification des goulots
d’étranglement et propose des conseillers d’optimisation automatisée
des index et des requêtes qui vous aident à cibler vos initiatives
d’optimisation des performances des bases de données.

 Oracle Database
 Microsoft SQL Server
 MySQL
 PostgreSQL
 SQLite
 Cassandra
 Redis
 MongoDB,
 Access
 OpenOffice.org Base
La fonction de hachage utilisée dans cette ligne de code est la fonction
"hash" de la bibliothèque "password" de CodeIgniter 3. Cette fonction
utilise l'algorithme Bcrypt pour hacher le mot de passe et renvoie le
mot de passe haché sous forme de chaîne de caractères.

3. Comment sécuriser les mots de passe des utilisateurs dans


CodeIgniter ?

Dans CodeIgniter, l'une des fonctions de hachage de données


disponibles est hash(). Cependant, il est recommandé d'utiliser la
bibliothèque password_hash() pour sécuriser les mots de passe des
utilisateurs. Cette bibliothèque permet d'utiliser des algorithmes de
hachage sécurisés et d'ajouter une couche de sécurité supplémentaire
en utilisant des "salts" (sel en français) pour renforcer la sécurité des
mots de passe.

Pour utiliser password_hash() dans CodeIgniter, vous devez charger la


bibliothèque password en utilisant la méthode $this->load-
>library('password');. Ensuite, vous pouvez utiliser la méthode hash()
pour hacher le mot de passe de l'utilisateur avant de l'enregistrer dans
la base de données.

Voici un exemple de code pour sécuriser un mot de passe dans


CodeIgniter en utilisant password_hash():

La fonction password_hash() crée un nouveau hachage en utilisant un


algorithme de hachage fort et irréversible.

Les algorithmes suivants sont actuellement supportés :

o PASSWORD_DEFAULT - Utilisation de l'algorithme bcrypt


(par défaut depuis PHP 5.5.0). Notez que cette constante est
concue pour changer dans le temps, au fur et à mesure que des
algorithmes plus récents et plus forts sont ajoutés à PHP. Pour
cette raison, la longueur du résultat issu de cet algorithme peut
changer dans le temps, il est donc recommandé de stocker le
résultat dans une colonne de la base de données qui peut contenir
au moins 60 caractères (255 caractères peut être un très bon
choix).
o PASSWORD_BCRYPT - Utilisation de
l'algorithme CRYPT_BLOWFISH pour créer la clé de
hachage. Ceci va créer une clé de hachage
standard crypt() utilisant l'identifiant "$2y$". Le résultat sera
toujours une chaîne de 60 caractères, ou false si une erreur
survient.
o PASSWORD_ARGON2I - Utilise l'algorithme de hachage
Argon2i pour créer le hachage. Cet algorithme est seulement
disponible si PHP a été compilé avec le support d'Argon2
o PASSWORD_ARGON2ID - Utilise l'algorithme de hachage
Argon2id pour créer le hachage. Cet algorithme est seulement
disponible si PHP a été compilé avec le support d'Argon2
Options supportées pour PASSWORD_BCRYPT:

Pour mettre en place une fonctionnalité de déconnexion automatique


pour les utilisateurs inactifs dans CodeIgniter, vous pouvez utiliser la
bibliothèque "session" de CodeIgniter.

L'algorithme qui permet de mettre en place une fonctionnalité de


déconnexion automatique pour les utilisateurs inactifs dans
CodeIgniter s'appelle l'algorithme de déconnexion automatique. Cet
algorithme est basé sur la notion de temps d'expiration de session. Le
temps d'expiration de session est le nombre de secondes pendant
lesquelles une session est considérée comme active. Si l'utilisateur n'a
pas accédé à une page pendant une période supérieure au temps
d'expiration de session, sa session est considérée comme obsolète et il
est déconnecté.

Voici les étapes à suivre:

1. Tout d'abord, vous devez configurer la bibliothèque "session" dans


votre fichier de configuration "config.php".
2. Ensuite, vous pouvez définir la durée d'inactivité souhaitée pour la
session en utilisant la fonction "sess_expiration" dans votre fichier de
configuration "config.php".
3. Vous pouvez également définir la fonction de rappel pour la session
en utilisant la fonction "sess_expire_on_close" dans votre fichier de
configuration "config.php".
4. Enfin, vous pouvez utiliser la fonction "sess_destroy" pour
déconnecter l'utilisateur automatiquement après une période
d'inactivité prédéfinie.

Voici un exemple de code pour mettre en place cette fonctionnalité:

phpCopier
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 900; // Durée d'inactivité de 15 minutes
$config['sess_expire_on_close'] = TRUE;

$this->load->library('session');

if ($this->session->userdata('last_activity') + $this->session-
>userdata('sess_expiration') < time()) {
// Déconnexion automatique de l'utilisateur
$this->session->sess_destroy();
}
Cela vérifie si l'utilisateur est inactif depuis plus de 15 minutes (défini
par "sess_expiration") et le déconnecte automatiquement s'il l'est.

La sécurité informatique vise généralement huit critères de sécurité


qui sont entre autres

 l'intégrité qui garantit que les données sont bien celles que l'on
croit être,
 la disponibilité qui maintient le bon fonctionnement du système
d'information,
 la confidentialité qui rend l'information inintelligible à d'autres
personnes que les seuls acteurs d'une transaction,
 la non répudiation qui garantit qu'une transaction ne peut être
niée ,
 l’'authentification qui assure que seules les personnes autorisées
aient accès aux ressources,
 l’autorisation qui consiste à donner à l'utilisateur la permission
d'accéder à une ressource ou à une fonction spécifique,
 l’identification qui est une étape indispensable où l’on doit
enregistrer l’identité de l’utilisateur,
 la Traçabilité qui est la caractéristique qui conserve les traces de
l’état et des mouvements de l’information.

 Confidentialité : les informations doivent être accessibles


uniquement aux personnes autorisées.
 Intégrité : les informations doivent être exactes et non altérées.
 Disponibilité : les informations doivent être accessibles lorsque
cela est nécessaire.
 Non-répudiation : il doit être impossible pour une personne de
nier avoir effectué une action.
 Authentification : il doit être possible d'identifier de manière
fiable une personne ou un système.
 Autorisation : il doit être possible de limiter l'accès aux
ressources aux personnes autorisées.

Il existe de nombreuses techniques qui peuvent être utilisées pour


garantir la non-répudiation, notamment :

 Les signatures électroniques : les signatures électroniques sont des


signatures numériques qui permettent d'authentifier l'auteur d'un
document ou d'une transaction.
 Les journaux d'audit : les journaux d'audit sont des enregistrements
des activités qui ont lieu sur un système. Ils peuvent être utilisés pour
retracer les actions des personnes.
 Les systèmes de vidéosurveillance : les systèmes de vidéosurveillance
peuvent être utilisés pour enregistrer les actions des personnes.

Les trois types de diagrammes UML sont les suivants :

 Diagrammes de structure : Ils décrivent les éléments qui composent un


système, ainsi que leurs relations.
 Diagrammes de comportement : Ils décrivent le comportement d'un
système, c'est-à-dire la façon dont il interagit avec son environnement.
 Diagrammes d'interaction : Ils combinent les éléments des
diagrammes de structure et de comportement pour décrire la façon
dont les éléments d'un système interagissent entre eux.
Diagrammes de structure

Les diagrammes de structure décrivent les éléments qui composent un


système, ainsi que leurs relations. Ils sont utilisés pour modéliser la
structure statique d'un système, c'est-à-dire sa structure à un instant
donné.

Les diagrammes de structure UML les plus courants sont les suivants :

 Diagramme de classes : Il décrit les classes et les relations entre


classes d'un système.
 Diagramme d'objets : Il représente un ensemble d'objets à un moment
donné.
 Diagramme de composants : Il représente les composants logiciels
d'un système et leurs relations.

Diagrammes de comportement

Les diagrammes de comportement décrivent le comportement d'un


système, c'est-à-dire la façon dont il interagit avec son environnement.
Ils sont utilisés pour modéliser la structure dynamique d'un système,
c'est-à-dire sa structure au fil du temps.

Les diagrammes de comportement UML les plus courants sont les


suivants :

 Diagramme de cas d'utilisation : Il décrit les interactions entre les


acteurs et le système.
 Diagramme d'activité : Il décrit le flux de contrôle d'un système.
 Diagramme de séquence : Il décrit les interactions entre objets au fil
du temps.
 Diagramme de communication : Il décrit les interactions entre objets,
en mettant l'accent sur les relations entre eux.
 Diagramme d'états-transitions : Il décrit les différents états d'un objet
et les transitions entre ces états.
Diagrammes d'interaction

Les diagrammes d'interaction combinent les éléments des diagrammes


de structure et de comportement pour décrire la façon dont les
éléments d'un système interagissent entre eux. Ils sont utilisés pour
modéliser la façon dont les acteurs et le système interagissent, ainsi
que la façon dont les objets d'un système interagissent entre eux.

Les diagrammes d'interaction UML les plus courants sont les


suivants :

 Diagramme de séquence
 Diagramme de communication
 Diagramme d'états-transitions

 Analyse des besoins : L'étape d'analyse des besoins consiste à


identifier les besoins des utilisateurs et des clients. Elle comprend la
collecte de données, l'analyse des exigences et la définition des
spécifications.
 Conception : L'étape de conception consiste à créer une
représentation visuelle du logiciel. Elle comprend la conception
de l'interface utilisateur, la conception de l'architecture logicielle
et la conception des bases de données.
 Développement : L'étape de développement consiste à écrire le
code source du logiciel. Elle comprend la programmation, le test
unitaire et l'intégration des composants.
 Test : L'étape de test consiste à tester le logiciel pour s'assurer
qu'il répond aux exigences. Elle comprend les tests unitaires, les
tests d'intégration, les tests d'acceptation et les tests de
performance.
 Déploiement : L'étape de déploiement consiste à mettre le
logiciel en production. Elle comprend la configuration des
serveurs, la migration des données et la formation des
utilisateurs.
 Maintenance : L'étape de maintenance consiste à corriger les
bogues et à apporter des améliorations au logiciel. Elle
comprend la maintenance corrective, la maintenance évolutive et
la maintenance préventive.

Les fonctions d'agrégation en SQL sont des fonctions qui permettent d'effectuer des
opérations statistiques sur un ensemble de valeurs. Elles retournent une seule
valeur, calculée sur l'ensemble des valeurs d'une colonne ou d'un groupe de
colonnes.

Les fonctions d'agrégation sont souvent utilisées avec la clause GROUP BY du SELECT
pour regrouper les données avant de les agréger.

Voici les fonctions d'agrégation disponibles en SQL :

COUNT

La fonction COUNT retourne le nombre de valeurs non nulles dans une colonne.

SQL
SELECT COUNT(*)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

COUNT_BIG

La fonction COUNT_BIG est similaire à la fonction COUNT, mais elle retourne un type
BIGINT.

SQL
SELECT COUNT_BIG(*)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

SUM
La fonction SUM retourne la somme de toutes les valeurs dans une colonne.

SQL
SELECT SUM(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

AVG

La fonction AVG retourne la moyenne de toutes les valeurs dans une colonne.

SQL
SELECT AVG(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

MIN

La fonction MIN retourne la valeur minimale dans une colonne.

SQL
SELECT MIN(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

MAX

La fonction MAX retourne la valeur maximale dans une colonne.

SQL
SELECT MAX(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

STDDEV_POP

La fonction STDDEV_POP retourne l'écart type de la population pour toutes les valeurs
dans une colonne.

SQL
SELECT STDDEV_POP(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy
STDDEV_SAMP

La fonction STDDEV_SAMP retourne l'écart type de l'échantillon pour toutes les valeurs
dans une colonne.

SQL
SELECT STDDEV_SAMP(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

VAR_POP

La fonction VAR_POP retourne la variance de la population pour toutes les valeurs


dans une colonne.

SQL
SELECT VAR_POP(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

VAR_SAMP

La fonction VAR_SAMP retourne la variance de l'échantillon pour toutes les valeurs


dans une colonne.

SQL
SELECT VAR_SAMP(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

SUMXDISTINCT

La fonction SUMXDISTINCT retourne la somme des valeurs distinctes dans une


colonne.

SQL
SELECT SUMXDISTINCT(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

APPROX_COUNT_DISTINCT

La fonction APPROX_COUNT_DISTINCT retourne une estimation du nombre de valeurs


distinctes dans une colonne.
SQL
SELECT APPROX_COUNT_DISTINCT(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

CHECKSUM_AGG

La fonction CHECKSUM_AGG retourne une valeur de hachage pour toutes les valeurs
dans une colonne.

SQL
SELECT CHECKSUM_AGG(column_name)
FROM [table_name];
Utilisez le code avec précaution. En savoir plus
content_copy

Voici quelques exemples d'utilisation des fonctions d'agrégation :

 Pour compter le nombre de clients dans une table clients, on peut utiliser la requête
suivante :
SQL
SELECT COUNT(*)
FROM clients;
Utilisez le code avec précaution. En savoir plus
content_copy

 Pour calculer le total des commandes passées par tous les clients, on peut utiliser la requête
suivante :
SQL
SELECT SUM(montant)
FROM commandes;
Utilisez le code avec précaution. En savoir plus
content_copy

 Pour trouver la valeur moyenne des prix des produits, on peut utiliser la requête suivante :
SQL
SELECT AVG(prix)
FROM produits;
Utilisez le code avec précaution. En savoir plus
content_copy

 Pour trouver la valeur minimale du stock d'un produit, on peut utiliser la requête suivante :
SQL
SELECT MIN(stock)
FROM produits;
Utilisez le code avec précaution. En savoir plus
content_copy

 Pour trouver la valeur maximale du stock d'un produit, on peut utiliser la requête suivante :
SQL
SELECT MAX(stock)
FROM produits;
Utilisez le code avec précaution. En savoir plus
content_copy

Les fonctions d'agrégation sont un outil puissant qui permet d'analyser rapidement et
facilement de grandes quantités de données.

tuneshare
more_vert

Vous aimerez peut-être aussi