Médiaforma

All posts tagged protection

Pour éviter qu’une adresse e-mail ne soit subtilisée par les robots qui parcourent le Web, le plus simple est de la convertir en une suite de caractères ASCII de type “g”. Pour cela, vous pouvez définir une fonction PHP dans laquelle les caractères de l’adresse e-mail sont parcourus un par un (avec la fonction substr()) et convertis en une suite de caractères ASCII avec la fonction ord(). Pour connaitre le nombre de caractères de l’adresse e-mail, vous utiliserez la fonction strlen() :

substr(chaine, position, longueur)

Où chaîne est la chaîne à parcourir, position la position du caractère à extraire et longueur est égal à 1 pour extraire un seul caractère.

Examinez le code suivant. La fonction proteger() retourne l’adresse e-mail qui lui est passée sous la forme d’une suite de codes ASCII.

<?php
  function proteger($adr) {
    $adresseCodee = "";
    for ($i=0; $i<strlen($adr); $i++)
      $adresseCodee .= "&#" . ord(substr($adr, $i, 1)) . ";";
    return $adresseCodee;
  }
  echo "<a href='" . proteger("mailto:admin@mediaforma.com") . "'>Pour nous joindre, cliquez ici</a>";
?>
ord(caractère)

retourne le code ASCII du caractère qui lui est passé en argument.

strlen(chaine)

retourne la longueur de la chaîne qui lui est passée en argument.
 

Ici, l’adresse email est utilisée dans un lien hypertexte.

Exécutez ce code dans WAMP Server. Comme vous pouvez le voir, le lien est opérationnel. Appuyez sur la touche Alt pour afficher le système de menus d’Internet Explorer et exécutez la commande Source dans le menu Affichage. L’adresse email affichée dans le lien est constituée d’une suite de codes ASCII. Ces informations sont incompréhensibles par les robots qui parcourent le Web. Votre adresse ne sera donc pas spammée.

 


Les fichiers .htaccess et .htpasswd permettent de protéger des dossiers et des fichiers sur un site Web.

Pour interdire l’accès à un dossier, définissez le fichier .htaccess comme ceci et stockez-le dans le dossier à protéger :

Options –Indexes

Si un utilisateur essaye d’afficher le contenu de ce dossier avec son navigateur, il obtiendra une erreur 403 en retour :

Pour protéger un dossier et les fichiers qu’il contient par un mot de passe, vous devez définir un fichier .htaccess et un fichier .htpasswd.

Voici le contenu du fichier .htaccess :

AuthName "Zone protégée"
AuthType Basic
AuthUserFile "C:/wamp/www/admin/.htpasswd"
Require valid-user

La première ligne indique le message à afficher dans la boîte de dialogue où sera saisi le login. La troisième ligne indique l’adresse du fichier .htpasswd.

Sous WAMP, il suffit de donner le chemin complet du fichier. Sur un serveur en ligne, utilisez la fonction PHP realpath() pour connaître le chemin absolu du fichier .htpasswd :

<?php echo realpath('.htpasswd'); ?>

Voici le contenu du fichier .htpasswd :

user1:pass1
user2:pass2
user3:pass3

etc.

Sous WAMP, le mot de passe est spécifié en clair. Sur un serveur en ligne, le mot de passe doit être crypté avec la fonction PHP crypt(). Par exemple, si votre mot de passe est monmotdepasse, vous obtiendrez sa version cryptée avec cette instruction :

<?php echo crypt('monmotdepasse'); ?>

Propriétés et méthodes de classes

Lorsque vous définissez une propriété et une méthode dans une classe en la faisant précéder du mot clé static, ces deux objets sont définis une fois pour toutes les instances de cette classe. Il est même possible d’y faire référence sans instancier la classe.

Si, au contraire, vous omettez le mot static lorsque vous définissez les propriétés et méthodes d’une classe, elles seront redéfinies dans chaque instance de la classe.

Supposons par exemple que vous définissiez une propriété et une méthode static dans une classe nommée Init :

class Init{
  static int i;
  static void m(){
    i = 1;
  }
}

Pour accéder à cette variable et à cette méthode dans une autre classe, il suffira de préciser le nom de la classe où elles ont été définies :

public class Test{
  public static void main (String args[]) {
    Init.i = 5;
    System.out.println(Init.i);
    Init.m();
    System.out.println(Init.i);
  }
}

Définissez les classes Init et Test en créant les fichiers Init.java et Test.java. Compilez ces fichiers avec le compilateur javac et vérifiez le bon fonctionnement de la classe Test.

Protection des membres

Java fournit plusieurs niveaux de protection pour les membres d’une classe (propriétés, méthodes) :

  • Les membres public sont accessibles par tous les autres objets de l’application.
  • Les membres private ne sont accessibles que par les méthodes de la même classe. Il est plus fréquent de rencontrer des données private que des méthodes private.
  • Tout comme les membres private, les membres protected ne sont accessibles que par les méthodes de la même classe. Par contre, les fonctions membres d’une classe héritée d’une classe qui possède des membres protégés peuvent accéder à ces derniers.

Constantes de classe

Si vous êtes amené à manipuler plusieurs fois une donnée définie dans une classe dont la valeur n’évoluera pas, il est pratique de la définir en tant que constante. Pour ce faire, vous utiliserez le mot clé final. Par exemple :

public class Test {
  final int Maxima = 25;
  final int Nombre[] = {1, 2, 3, 4, 5, 6, 7};
}

Vous pouvez tout aussi bien définir un tableau de constantes :

final int Nombre[] = {1, 2, 3, 4, 5, 6, 7};

Attention :

Le mot clé final ne peut être utilisé qu’à l’intérieur d’une classe.

Définir une classe

Nous allons développer l’exemple précédent pour aborder pas à pas la démarche permettant de définir une nouvelle classe.

Avant de pouvoir utiliser une classe, il faut la déclarer comme suit :

class Cylindre{
   ...
  // Propriétés et méthodes de la classe
  ...
};

A l’intérieur des accolades sont propriétés et les méthodes de la classe. Par exemple :

class Cylindre {
  double rayon;     // Rayon de la base du cylindre
  double hauteur;   // Hauteur du cylindre

  double Calcule() {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

Cette déclaration indique au compilateur le contenu de la classe Cylindre, mais ne réserve en rien l’espace mémoire qui permettra de travailler avec cette classe. Pour ce faire, vous devez définir une instance de la classe Cylindre (on parle aussi d’objet) avec une instruction du type suivant :

Cylindre Cyl = new Cylindre();

Cette instruction définit le bloc de mémoire Cyl dans lequel les propriétés rayon et hauteur et la méthode Calcule() pourront être manipulées.

La classe Cylindre ainsi définie n’est pas accessible de l’extérieur. En effet, toutes les propriétés et méthodes d’une classe sont par défaut de type private (privé). Elles ne peuvent donc être initialisées par des instructions extérieures à la classe. Pour résoudre ce problème, il suffit d’ajouter un spécificateur d’accès public comme suit :

public class Cylindre {
  static public double rayon;     // Rayon de la base du cylindre
  static public double hauteur;   // Hauteur du cylindre

  static public double Calcule() {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

Dans cet exemple, les deux propriétés et la méthode sont rendues publiques. Elles sont accessibles à toutes les méthodes de l’application, qu’elles fassent partie d’autres classes ou non. Nous pouvons donc y accéder avec des instructions “à point” :

public class Calcul
{

  public static void main(String args[])
  {

    Cylindre Cyl = new Cylindre();  // Définition de l'objet Cyl de type Cylindre
    Cyl.rayon = 4.6;    // rayon de la base : 4,6 cm
    Cyl.hauteur = 12;   // hauteur du cylindre : 12 cm
    System.out.println("Volume du cylindre : " + Cyl.Calcule());
  }
}

Dans la procédure principale main, un objet de classe Cylindre est défini :

Cylindre Cyl = new Cylindre();  // Définition de l'objet Cyl de type Cylindre

Grâce à cette instruction, l’objet Cyl a désormais une existence réelle. Les deux instructions suivantes initialisent les variables membres rayon et hauteur :

Cyl.rayon = 4.6;    // rayon de la base : 4,6 cm
Cyl.hauteur = 12;   // hauteur du cylindre : 12 cm

Enfin, la dernière instruction utilise la fonction membre Calcule() pour calculer le volume du cylindre, et affiche le résultat sur l’écran :

System.out.println("Volume du cylindre : " + Cyl.Calcule());

Comme nous le verrons par la suite, il est parfois important que les variables utilisées dans une classe ne soient pas accessibles aux fonctions extérieures à la classe. Pour cela, il suffit de les faire précéder du spécificateur d’accès private :

public class Cylindre {
  static private double rayon;     // Rayon de la base du cylindre
  static private double hauteur;   // Hauteur du cylindre

static public double Calcule()
  {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

Mais alors, les variables rayon et hauteur d’un objet Cylindre ne peuvent pas être initialisées directement. Les instructions suivantes sont donc illicites :

Cylindre Cyl = new Cylindre();  // Définition de l'objet Cyl de type Cylindre
Cyl.rayon = 4.6;   // Impossible d'initialiser une variable
Cyl.hauteur = 12; // private depuis une fonction extérieure

Pour initialiser ces variables, on utilise généralement une fonction membre public à laquelle on passe les valeurs à affecter aux variables privées :

static public void DefDonnees (double r, double h){
  rayon = r;
  hauteur = h;
};

Inversement, il peut être intéressant pour une fonction extérieure à la classe de connaître les valeurs courantes du rayon et de la hauteur. Pour cela, on définit deux fonctions membres publiques :

static double LitRayon() {
  return rayon;   // Le rayon est retourné par la fonction publique
}

static double LitHauteur() {
  return hauteur;   // La hauteur est retournée par la fonction publique
}

Le code permettant de définir la classe Cylindre devient :

public class Cylindre{
  static private double rayon;     // Rayon de la base du cylindre
  static private double hauteur;   // Hauteur du cylindre

  static public void DefDonnees (double r, double h) {
    rayon = r;
    hauteur = h;
  };

  static double LitRayon() {
    return rayon;   // Le rayon est retourné par la fonction publique
  }

  static double LitHauteur() {
    return hauteur;   // La hauteur est retournée par la fonction publique
  }

  static public double Calcule() {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

L’application qui calcule le volume du cylindre doit être modifiée comme suit :

public class Calcul {
  public static void main(String args[])  {
    Cylindre Cyl = new Cylindre();  // Définition de l'objet Cyl de classe Cylindre
    double R = 4.6; // Rayon passé à la classe
    double H = 12;  // Hauteur passée à la classe
    Cylindre.DefDonnees(R, H); // Initialisation indirecte du rayon et de la hauteur
    System.out.println("Volume du cylindre : " + Cyl.Calcule());
  }
}


Pour protéger un document Word contre toute modification abusive, vous pouvez lui associer un mot de passe. Sélectionnez l’onglet FICHIER dans le Ruban, cliquez sur Enregistrer sous, sur Ordinateur puis sur Parcourir. Dans la partie inférieure droite de la boîte de dialogue Enregistrer sous, cliquez sur Outils puis sur Options générales.

Si vous souhaitez que vos lecteurs/correcteurs saisissent un mot de passe avant de pouvoir afficher le document, complétez la zone de texte Mot de passe pour la lecture.

Si vous souhaitez lecteurs/correcteurs saisissent un mot de passe avant de pouvoir enregistrer les modifications apportées au document, complétez la zone Mot de passe pour la modification.

A titre d’information, un mot de passe peut contenir n’importe quelle combinaison de lettres, chiffres, symboles et espaces. Il peut comporter jusqu’à 15 caractères de long.

Cliquez sur OK, confirmez votre ou vos mots de passe, puis cliquez sur Enregistrer pour sauvegarder le document. Désormais, seules les personnes en possession des mots de passe pourront lire ou modifier votre document.


Cliquez ici pour accéder à tous les sujets sur Excel 2010

Lorsqu’une feuille de calcul est protégée, il n’est pas possible de modifier son contenu : toutes ses cellules sont automatiquement verrouillées.

Pour protéger une feuille de calcul, sélectionnez les cellules qui la composent, basculez sur l’onglet Accueil dans le Ruban, cliquez sur l’icône Format dans le groupe Cellules et assurez-vous que la commande Verrouiller la cellule est active. Cliquez alors sur Protéger la feuille. Si nécessaire, définissez un mot de passe pour autoriser la suppression de la protection et définissez les actions autorisées dans la feuille.

Validez en cliquant sur OK et, le cas échéant en saisissant à nouveau le mot de passe. Toute modification de cellule est maintenant impossible.

Pour supprimer la protection, cliquez sur l’icône Format dans le groupe Cellules et sélectionnez Oter la protection de la feuille dans le menu. Si vous avez défini un mot de passe, saisissez-le et validez en cliquant sur OK.


Cliquez ici pour accéder à tous les sujets sur Excel 2010

Si un fichier contient des données personnelles ou confidentielles, il peut être intéressant de le protéger en lecture et/ou en écriture. Sélectionnez l’onglet Fichier dans le Ruban, puis cliquez sur Enregistrer sous. Dans la boîte de dialogue Enregistrer sous, cliquez sur Outils et sélectionnez Options générales dans le menu. Définissez un ou deux mots de passe dans la boîte de dialogue Options générales.

Attention : Excel fait la différence entre les majuscules et les minuscules tapées dans les mots de passe. A l’ouverture et/ou à l’enregistrement d’un fichier protégé, vous devez taper exactement le mot de passe qui a été défini, sans quoi, l’opération vous sera refusée.


Pour protéger un document Word contre toute modification abusive, vous pouvez lui associer un mot de passe. Sélectionnez l’onglet Fichier dans le Ruban, puis cliquez sur Enregistrer sous. Dans la partie inférieure droite de la boîte de dialogue Enregistrer sous, cliquez sur Outils puis sur Options générales.

Si vous souhaitez que vos lecteurs/correcteurs saisissent un mot de passe avant de pouvoir afficher le document, complétez la zone de texte Mot de passe pour la lecture[1].

Si vous souhaitez que vos lecteurs/correcteurs saisissent un mot de passe avant de pouvoir enregistrer les modifications apportées au document, complétez la zone Mot de passe pour la modification.

Cliquez sur OK, confirmez votre ou vos mots de passe, puis cliquez sur Enregistrer pour sauvegarder le document. Désormais, seules les personnes en possession des mots de passe pourront lire et/ou modifier votre document.


[1] Un mot de passe peut contenir jusqu’à 15 caractères composés de lettres, chiffres, symboles et espaces.