Examen. CMS, javascript, sécurité.

Transcription

Examen. CMS, javascript, sécurité.
SRC2
Examen web avancé
Semestre 4
Examen. CMS, javascript, sécurité.
Les documents ne sont pas autorisés. Vous pouvez traiter les questions dans l’ordre que vous voulez. Essayez de
Rédiger vos réponses de manière concise, mais précise ! Au choix : exercice 2 ou exercice 4.
Exercice 1 : les CMS
1. Comment définiriez vous, brièvement, un CMS ? Citez un CMS général, un CMS orienté ”blog” et un CMS orienté
vers le collaboratif.
2. Sous Joomla, on classe les articles en sections et catégories, sous Drupal, on leur associe un thème qui fait
lui-même partie d’un vocabulaire. Quelles raisons a-t-on de classifier ainsi les articles ?
3. Le principe de base des CMS est la séparation de . . . et de . . .. Complétez les pointillés.
4. Comment est géré l’aspect extérieur d’un site sous Joomla ou sous Drupal ?
Exercice 2 : javascript
1. Quelle différence essentielle y-a-t-il entre le javascript et le php ?
2. Citez 3 exemples d’utilisation possible de javascript.
3. Soit une page web comprenant une liste de sélection dont l’attribut id vaut liste et une boîte de texte, dont l’attribut id vaut texte et l’attribut name vaut texte également (<input type="text" name="texte" id="texte">...).
On souhaite que lorsqu’un utilisateur sélectionne un item de la liste liste le texte (innerHTML...) de cet item
apparaisse dans la boîte de texte.
(a) Que doit-on rajouter et où pour que le click sur un item de la liste de sélection soit détecté et appelle une
fonction javascript appelée changeTexte() chargée de changer le texte de la boîte texte ?
(b) Ecrivez la fonction changeTexte(). On rappelle que :
– si liste est une liste de sélection, ses options sont contenues dans le tableau : liste.options.
– Pour savoir le numéro de l’option sélectionnée (son indice), on utilise la propriété selectedIndex du
tableau des options.
– Si texte désigne la boîte de texte texte, la valeur qu’elle contient est alors accessible grâce à la propriété
value.
4. Si le texte que l’on souhaite afficher dans la case texte n’était non pas le texte de l’item sélectionné, mais un
texte contenu dans une base de données sur le serveur, quelle technique pourrait-on utiliser ? Décrivez cette
technique sommairement, en quelques lignes, en insistant sur ses avantages.
Exercice 3 : sécurité
1. Décrivez brièvement trois failles de sécurité que vous connaissez (sigle, principe, une solution).
2. Soit le morceau de code suivant, relatif à un formulaire de login (le champ login est un champ texte de name
nom et le champ password est un champ de type password de name pass) :
$link=mysql_connect("localhost", "login","") or die(mysql_error());
mysql_select_db("login",$link) or die(mysql_error());
$log=$_POST[’nom’];$password=$_POST[’pass’];
$resultat=mysql_query("SELECT * FROM utilisateurs WHERE login=’$log’");
if (mysql_affected_rows($link)==0)
echo "mauvais login<br />";
else{
$ligne=mysql_fetch_assoc($resultat);
if ($_POST[’pass’]==$ligne[’password’]){
$_SESSION[’login’]=$_POST["nom"];
header("location : ".$_SERVER[’PHP_SELF’]);
echo "Bonjour, monsieur ".$_POST["nom"];
}
}
(a) Quelle ligne est particulièrement sensible à une attaque XSS et pourquoi ? Comment s’en protéger ?
(b) Essayez d’imaginer une attaque par injection SQL sur ce code (par exemple pour deviner une partie d’un
mot de passe d’un utilisateur de login connu...). Quelle parade proposez vous ?