La sécurité
Rebol intègre un gestionnaire de sécurité qui gère
les accès aux fichiers et dossiers, ainsi que les accès réseaux.
On peut activer ou désactiver cette gestion de sécurité
de 2 manières, soit dans le script Rebol, soit par les options de la
ligne de commande.
Soit le script suivant (testsecu.r), qui liste les fichiers du répertoire
parent :
Rebol
[
Sujet: "Test sécurité"
Auteur: "RebolZone"
Version: 1.0.0
]
; Lecture du répertoire parent
print read %..
input
Si on exécute ce script à la ligne de commande,
rebol testsecu.r,
le gestionnaire de sécurité demandera la permission pour accéder
au répertoire parent.
En revanche, en utilisant l'option -s,
rebol -s testsecu.r, le script
s'exécutera SANS demande de confirmation.
Remarques :
Il convient d'être très prudent avec les notions de sécurité
dans le cas d'une application multi-utilisateurs (Web, Intranet ...).
Une faille de sécurité peut mettre en péril tout un système
d'informations.
Rebol met à disposition un dialecte permettant de gérer la sécurité,
nottemment par la fonction
secure.
2 mots clé
net et
file indique sur quoi va porter la
sécurité, on peut également préciser un fichier
ou dossier particulier.
On précise ensuite le niveau de sécurité :
Niveau |
Commentaires |
allow |
Tout accès est autorisé |
ask |
Une demande de permission sera formulée |
quit |
En cas d'accès, le script s'arrête |
throw |
En cas d'accès, le script continue |
On peut préciser le niveau d'accès :
Niveau |
Commentaires |
read |
Lecture |
write |
Ecriture, suppression ... |
all |
Tout accès |
Exemples :
Dans l'exemple ci-dessous, on positionne la sécurité minimum
pour les fichiers, on lit 2 fois le répertoire parent, puis on force
la sécurité à demander.
Rebol
[
]
secure [file allow]
print read %..
print read %..
secure [file ask]
print read %..
input
Autre exemple, où l'on va interdire l'accès aux fichiers et
répertoires :
Rebol
[
]
; Mise à jour de la sécurité pour les fichiers, pas d'accè s
secure [file quit]
print read %.. ; ERREUR et fin de script
input
Le résultat de cet exemple sera :
REBOL - Security Violation ** Press
enter to quit...
Aucun accès n'est autorisé.
On peut donner l'accès à un répertoire particulier, dans
l'exemple ci-dessous, on pourra lire et écrire dans le répertoire
/c/tmp uniquement :
Rebol
[
]
; Mise à jour de la sécurité pour les fichiers, pas d'accè s sauf pour /c/tmp
secure [
file quit
%/c/tmp/ allow
]
print read %/c/tmp/ ; Ok pas d'erreur
print read %.. ; ERREUR et fin de script
input
Pour ne donner que l'accès en lecture au dossier /c/tmp :
Rebol
[
]
secure [
file quit
%/c/tmp/ [allow read]
]
print read %/c/tmp/ ; OK lecture possible
write %/c/tmp/res.log "Ecriture OK" ; Impossible ERREUR et fin de script
Cette configuration du niveau de sécurité peut être réalisée
au niveau de la ligne de commande Rebol avec l'option
--secure.