ADC

Démarrer la vérification de l’URL

La vérification de l’URL de démarrage examine les URL dans les demandes entrantes et bloque la tentative de connexion si l’URL ne répond pas aux critères spécifiés. Pour répondre aux critères, l’URL doit correspondre à une entrée de la liste URL de démarrage, sauf si le paramètre Imposer la fermeture de l’URL est activé. Si vous activez ce paramètre, un utilisateur qui clique sur un lien sur votre site Web est connecté à la cible de ce lien.

Le but principal de la vérification de l’URL de démarrage est d’empêcher les tentatives répétées d’accès aux URL aléatoires sur un site Web (navigation forcée) par le biais de signets, de liens externes, ou de sauter vers des pages en saisissant manuellement les URL pour ignorer les pages requises pour accéder à cette partie du site Web. Une navigation forcée peut être utilisée pour déclencher un dépassement de tampon, trouver du contenu auquel les utilisateurs n’étaient pas censés accéder directement, ou trouver une porte dérobée dans les zones sécurisées de votre serveur Web. Le Web App Firewall applique la traversée ou le chemin logique donné d’un site Web en autorisant uniquement l’accès aux URL configurées en tant qu’URL de démarrage.

Si vous utilisez l’assistant ou l’interface graphique, dans la boîte de dialogue Modifier la vérification de l’URL de démarrage, sous l’onglet Général, vous pouvez activer ou désactiver Bloquer, Journal, Statistiques, Actions d’apprentissage et les paramètres suivants :

  • Imposer la fermeture de l’URL. Permettez aux utilisateurs d’accéder à n’importe quelle page web de votre site Web en cliquant sur un lien hypertexte sur n’importe quelle autre page de votre site Web. Les utilisateurs peuvent accéder à n’importe quelle page de votre site Web accessible à partir de la page d’accueil ou de toute page de démarrage désignée en cliquant sur des hyperliens. Remarque : La fonction de fermeture d’URL permet à toute chaîne de requête d’être ajoutée et envoyée avec l’URL d’action d’un formulaire Web soumis à l’aide de la méthode HTTP GET. Si vos sites Web protégés utilisent des formulaires pour accéder à une base de données SQL, assurez-vous que la vérification d’injection SQL est activée et correctement configurée.
  • Fermeture d’URL sans session. Du point de vue du client, ce type de fermeture d’URL fonctionne exactement de la même manière que la fermeture d’URL standard, sensible à la session, mais utilise un jeton intégré dans l’URL au lieu d’un cookie pour suivre l’activité de l’utilisateur, ce qui consomme beaucoup moins de ressources. Lorsque la fermeture d’URL sans session est activée, le Web App Firewall ajoute une balise « as_url_id » à toutes les URL qui sont en fermeture d’URL. Remarque : Lorsque vous activez la fermeture d’URL sans session (Fermeture d’URL sans session), vous devez également activer la fermeture d’URL régulière ( Forcer la fermeture d’URL) ou la fermeture d’URL sans session ne fonctionne pas.
  • Valider l’en-tête du référent. Vérifiez que l’en-tête Referer dans une demande contenant des données de formulaire Web provenant de votre site Web protégé au lieu d’un autre site Web. Cette action vérifie que votre site Web, et non un attaquant extérieur, est la source du formulaire Web. Cela protège contre les falsifications de requêtes inter-sites (CSRF) sans nécessiter le balisage de formulaire, ce qui nécessite plus de CPU que les vérifications d’en-tête. Le Web App Firewall peut gérer l’en-tête HTTP Referer de l’une des quatre manières suivantes, selon l’option sélectionnée dans la liste déroulante :
    • Off—Ne pas valider l’en-tête Referer.
    • If-Present—Valide l’en-tête Referer si un en-tête Referer existe. Si un en-tête Referer non valide est trouvé, la demande génère une violation d’en-tête référent-référent. Si aucun en-tête Referer n’existe, la demande ne génère pas de violation d’en-tête référent-référent. Cette option permet au Web App Firewall d’effectuer la validation de l’en-tête Referer sur les demandes qui contiennent un en-tête Referer, mais ne bloque pas les demandes des utilisateurs dont le navigateur ne définit pas l’en-tête Referer ou qui utilisent des proxy Web ou des filtres qui suppriment cet en-tête.
    • URL Always Except Start : validez toujours l’en-tête Referer. S’il n’y a pas d’en-tête Referer et que l’URL demandée n’est pas exemptée par la règle de relaxation StarTURL, la demande génère une violation d’en-tête référent-référent. Si l’en-tête Referer est présent mais qu’il n’est pas valide, la requête génère une violation d’en-tête référent-référent.
    • Always Except First Request—Validez toujours l’en-tête du référent. S’il n’y a pas d’en-tête référent, seule l’URL qui est accédé en premier est autorisée. Toutes les autres URL sont bloquées sans en-tête référent valide. Si l’en-tête Referer est présent mais qu’il n’est pas valide, la requête génère une violation d’en-tête référent-référent.

Un paramètre d’URL de démarrage, Exempter les URL de fermeture des vérifications de sécurité, n’est pas configuré dans la boîte de dialogue Modifier la vérification d’URL de démarrage, mais est configuré dans l’onglet Paramètres du profil. Si cette option est activée, ce paramètre indique au Web App Firewall de ne pas exécuter d’autres vérifications basées sur le formulaire (telles que le script inter-site et l’inspection SQL Injection) sur les URL qui répondent aux critères de fermeture d’URL.

Remarque

Bien que la vérification de l’en-tête du référent et la vérification de sécurité de l’URL de démarrage partagent les mêmes paramètres d’action, il est possible de violer la vérification de l’en-tête du référent sans violer la vérification de l’URL de démarrage. La différence est visible dans les journaux, qui les violations de vérification de l’en-tête du référent de journal séparément des violations de vérification de l’URL de démarrage.

Les paramètres d’en-tête Referer (OFF, IF-Present, AlwaysExceptStartURLs et AlwaysExceptFirstRequest) sont organisés dans l’ordre le moins restrictif à le plus restrictif et fonctionnent comme suit :

OFF :

  • En-tête du référent non coché.

If-Present :

  • La requête n’a pas d’en-tête référent -> La requête est autorisée.
  • La requête a l’en-tête du référent et l’URL du référent est dans la fermeture de l’URL -> La requête est autorisée.
  • La requête a l’en-tête du référent et l’URL du référent n’est pas dans la fermeture de l’URL -> La requête est bloquée.

AlwaysExceptStartURLs :

  • La requête n’a pas d’en-tête référent et l’URL de la requête est une URL de démarrage -> La requête est autorisée.
  • La demande n’a pas d’en-tête référent et l’URL de la demande n’est pas une URL de démarrage ->La demande est bloquée.
  • La requête a l’en-tête du référent et l’URL du référent est dans la fermeture de l’URL -> La requête est autorisée.
  • La requête a l’en-tête du référent et l’URL du référent n’est pas dans la fermeture de l’URL -> La requête est bloquée.

AlwaysExceptFirstRequest :

  • Request n’a pas d’en-tête référent et est la première URL de requête de la session -> Request is allowed.
  • La requête n’a pas d’en-tête référent et n’est pas la première URL de requête de la session -> La requête est bloquée.
  • Request a l’en-tête référent et est soit la première URL de requête de la session, soit est en fermeture d’URL -> Request is allowed.
  • La requête a l’en-tête référent et n’est ni la première URL de requête de la session ni est en fermeture d’URL -> La requête est bloquée.

Si vous utilisez l’interface de ligne de commande, vous pouvez entrer les commandes suivantes pour configurer la vérification de l’URL de démarrage :

  • set appfw profile <name> -startURLAction [block] [learn] [log] [stats] [none]
  • set appfw profile <name> -startURLClosure ([ON] | [OFF])
  • set appfw profile <name> -sessionlessURLClosure ([ON] | [OFF])
  • set appfw profile <name> -exemptClosureURLsFromSecurityChecks ([ON] | [OFF)
  • set appfw profile <name> -RefererHeaderCheck ([OFF] | [if-present] | [AlwaysExceptStartURLs] | [AlwaysExceptFirstRequest])

Pour spécifier des relaxations pour la vérification de l’URL de démarrage, vous devez utiliser l’interface graphique. Sous l’onglet Vérifications de la boîte de dialogue Modifier la vérification de l’URL de début, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter la relaxation de la vérification de l’URL de début ou sélectionnez une relaxation existante et cliquez sur Ouvrir pour ouvrir la boîte de dialogue Modifier la relaxation de la vérification de l’URL de début. L’une ou l’autre des boîtes de dialogue fournit les mêmes options pour configurer une relaxation.

Voici des exemples de relaxations de vérification de l’URL de démarrage :

  • Autoriser les utilisateurs à accéder à la page d’accueil à l’adresse www.example.com :

     ^http://www[.]example[.]com$
     <!--NeedCopy-->
    
  • Autoriser les utilisateurs à accéder à toutes les pages Web au format HTML statique (.htm et .html), HTML analysé par serveur (.htp et .shtml), PHP (.php) et Microsoft ASP (.asp) à l’adresse www.example.com :

     ^http://www[.]example[.]com/([0-9A-Za-z][0-9A-Za-z_-]\*/)\*
     [0-9A-Za-z][0-9A-Za-z_.-]*[.](asp|htp|php|s?html?)$
     <!--NeedCopy-->
    
  • Autoriser les utilisateurs à accéder aux pages Web avec des noms de chemin d’accès ou des noms de fichiers contenant des caractères non ASCII sur www.example-español.com :

     ^http://www[.]example-espaxC3xB1ol[.]com/(([0-9A-Za-z]|x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*
     ([0-9A-Za-z]|x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
     <!--NeedCopy-->
    

    Remarque : Dans l’expression ci-dessus, chaque classe de caractères a été regroupée avec la chaîne x[0-9a-fa-F][0-9A-Fa-f], qui correspond à toutes les chaînes de codage de caractères correctement construites, mais n’autorise pas les barres obliques inverse errantes qui ne sont pas associées à une chaîne de codage de caractères UTF-8. La double barre oblique inverse () est une barre oblique inverse échappée, qui indique au Web App Firewall de l’interpréter comme une barre oblique inverse littérale. Si vous n’incluez qu’une barre oblique inverse, le Web App Firewall interpréterait à la place le crochet gauche suivant ([) comme un caractère littéral au lieu de l’ouverture d’une classe de caractères, ce qui romprait l’expression.

  • Autoriser les utilisateurs à accéder à tous les graphiques au format GIF (.gif), JPEG (.jpg et .jpeg) et PNG (.png) à l’adresse www.example.com :

     ^http://www[.]example[.]com/([0-9A-Za-z][0-9A-Za-z_-]\*/)\*
     [0-9A-Za-z][0-9A-Za-z_.-]*[.](gif|jpe?g|png)$
     <!--NeedCopy-->
    
  • Autoriser les utilisateurs à accéder aux scripts CGI (.cgi) et PERL (.pl), mais uniquement dans le répertoire CGI-BIN :

     ^http://www[.]example[.]com/CGI-BIN/[0-9A-Za-z][0-9A-Za-z_.-]*[.](cgi|pl)$
     <!--NeedCopy-->
    
  • Autoriser les utilisateurs à accéder à Microsoft Office et à d’autres fichiers de documents dans le répertoire docsarchive :

     ^http://www[.]example[.]com/docsarchive/[0-9A-Za-z][0-9A-Za-z_-.]*[.](doc|xls|pdf|ppt)$
     <!--NeedCopy-->
    

Remarque

Par défaut, toutes les URL du Web App Firewall sont considérées comme des expressions régulières.

Attention : Les expressions régulières sont puissantes. Surtout si vous n’êtes pas familier avec les expressions régulières au format PCRE, vérifiez les expressions régulières que vous écrivez. Assurez-vous qu’elles définissent exactement l’URL que vous voulez ajouter en tant qu’exception, et rien d’autre. L’utilisation négligente des caractères génériques, et en particulier de la combinaison de métacaractères/caractères génériques ( .*), peut avoir des résultats que vous ne voulez pas, comme bloquer l’accès au contenu Web que vous n’aviez pas l’intention de bloquer ou autoriser une attaque que la vérification de l’URL de démarrage aurait autrement bloquée.

Conseil

Vous pouvez ajouter le -and- à la liste autorisée de mots-clés SQL pour le schéma d’attribution de noms d’URL. Par exemple, https://FQDN/bread-and-butter.

Démarrer la vérification de l’URL

Dans cet article