Ce module permet la journalisation légale des requêtes client. La
- journalisation s'effectuant avant et après le traitement de la
- requête, le journal légal contient deux lignes pour chaque requête.
- Le processus de journalisation légale est très strict, à savoir
- :
-
-
-
Le format est figé. Vous ne pouvez pas modifier le format du
- journal à l'exécution.
-
S'il ne peut pas enregistrer ses données, le processus enfant se
- termine aussitôt, et peut éventuellement enregistrer un vidage
- mémoire (selon la définition de la directive CoreDumpDirectory).
-
-
-
Pour interpréter les données du journal légal, vous pouvez vous
- aider du script check_forensic qui se trouve dans le
- répertoire support de la distribution.
-
Note de traduction : le terme "légal" utilisé dans le présent document ne suggère aucunement que
- ce module apporte une valeur juridique aux journaux. Il est à comprendre dans le contexte
- similaire à ce que l'on trouve en analyse medico-légale. En d'autres termes, la finalité de ce module
- est de simplifier les opérations d'investigation autour du traitement des requêtes par le serveur.
Chaque requête fait l'objet d'une double journalisation. La
- requête est journalisée une première fois avant son traitement
- (c'est à dire après la réception des en-têtes). La deuxième entrée
- du journal est écrite après le traitement de la requête, en
- fait au moment de la journalisation habituelle.
-
-
Un identifiant unique est attribué à chaque requête afin de
- pouvoir l'identifier. Cette identifiant légal peut faire l'objet
- d'un enregistrement dans le journal standard en utilisant l'élément
- de chaîne de format %{forensic-id}n. Si vous utilisez
- mod_unique_id, c'est l'identifiant qu'il génère qui
- sera utilisé.
-
-
La première partie de la journalisation de la requête enregistre
- l'identifiant légal, la ligne de la requête et tous les en-têtes
- reçus séparés par des caractères pipe (|). Voici à
- titre d'exemple à quoi pourrait ressembler une telle entrée (tout
- étant rassemblé sur une seule ligne) :
Le caractère plus ('+') de début indique qu'il s'agit de la
- première entrée de journal pour cette requête. La seconde entrée ne
- contiendra qu'un caractère moins ('-') suivi de l'identifiant :
-
-
- -yQtJf8CoAB4AAFNXBIEAAAAA
-
-
-
Le script check_forensic prend comme argument le nom
- du fichier journal. Il recherche ces paires d'identifiants
- +/- et affiche un message d'erreur si la
- journalisation d'une requête n'est pas complète.
Voir le document conseils en matière de
- sécurité pour des détails sur les raisons pour lesquelles votre
- sécurité pourrait être compromise si le répertoire dans lequel les
- fichiers journaux sont stockés sont inscriptibles par tout autre
- utilisateur que celui qui démarre le serveur.
-
Les fichiers journaux peuvent contenir des données sensibles
- comme le contenu des en-têtes Authorization: (qui
- peuvent contenir des mots de passe) ; ils ne doivent donc être
- lisibles que par l'utilisateur qui démarre le serveur.
La directive ForensicLog permet de
- contrôler la journalisation des requêtes à des fins d'analyse
- légale. Chaque entrée du journal se voit assigner un identifiant
- unique qui peut être associé à la requête en utilisant la directive
- CustomLog habituelle.
- mod_log_forensic crée un élément nommé
- forensic-id, qui peut être ajouté au journal standard
- en utilisant l'élément de format %{forensic-id}n.
-
-
L'argument, qui permet de spécifier l'emplacement vers lequel le
- journal légal sera écrit, peut contenir les deux types de valeurs
- suivants :
-
-
-
nom-fichier
-
Un nom de fichier relatif au répertoire défini par la
- directive ServerRoot.
-
-
pipe
-
Le caractère pipe "|", suivi du chemin vers un
- programme qui recevra les informations de la journalisation sur
- son entrée standard. Le nom du programme peut être relatif au
- répertoire défini par la directive ServerRoot.
-
-
Sécurité :
-
Si les journaux sont redirigés vers un programme, ce dernier
- s'exécutera sous l'utilisateur qui a démarré
- httpd. Ce sera l'utilisateur root si le serveur
- a été démarré par root ; vérifiez que le programme est
- sécurisé ou passe sous le contrôle d'un utilisateur possédant des
- droits restreints.
-
-
-
Note
-
Lors de la spécification d'un chemin de fichier sur les
- plate-formes non-Unix, il faut prendre soin de ne pas oublier
- que seuls les slashes directs doivent être utilisés, même si la
- plate-forme autorise l'emploi d'anti-slashes. D'une manière
- générale, c'est une bonne idée que de n'utiliser que des slashes
- directs dans les fichiers de configuration.
Notice: This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
-
-
\ No newline at end of file
diff --git a/docs/manual/mod/mod_ssl.xml b/docs/manual/mod/mod_ssl.xml
index ea39526e25..990b4a935a 100644
--- a/docs/manual/mod/mod_ssl.xml
+++ b/docs/manual/mod/mod_ssl.xml
@@ -847,7 +847,7 @@ algorithm type.
-Finally the the end-entity certificate's private key can also be
+Finally the end-entity certificate's private key can also be
added to the certificate file instead of using a separate
SSLCertificateKeyFile
directive. This practice is highly discouraged. If it is used,
diff --git a/modules/aaa/mod_authn_core.c b/modules/aaa/mod_authn_core.c
index 0346602590..f3a494c275 100644
--- a/modules/aaa/mod_authn_core.c
+++ b/modules/aaa/mod_authn_core.c
@@ -109,7 +109,7 @@ static authn_status authn_alias_check_password(request_rec *r, const char *user,
const char *password)
{
/* Look up the provider alias in the alias list */
- /* Get the the dir_config and call ap_Merge_per_dir_configs() */
+ /* Get the dir_config and call ap_Merge_per_dir_configs() */
/* Call the real provider->check_password() function */
/* return the result of the above function call */
@@ -141,7 +141,7 @@ static authn_status authn_alias_get_realm_hash(request_rec *r, const char *user,
const char *realm, char **rethash)
{
/* Look up the provider alias in the alias list */
- /* Get the the dir_config and call ap_Merge_per_dir_configs() */
+ /* Get the dir_config and call ap_Merge_per_dir_configs() */
/* Call the real provider->get_realm_hash() function */
/* return the result of the above function call */
diff --git a/modules/aaa/mod_authz_core.c b/modules/aaa/mod_authz_core.c
index d70e6965cf..b669c8c8db 100644
--- a/modules/aaa/mod_authz_core.c
+++ b/modules/aaa/mod_authz_core.c
@@ -196,7 +196,7 @@ static authz_status authz_alias_check_authorization(request_rec *r,
authz_status ret = AUTHZ_DENIED;
/* Look up the provider alias in the alias list.
- * Get the the dir_config and call ap_Merge_per_dir_configs()
+ * Get the dir_config and call ap_Merge_per_dir_configs()
* Call the real provider->check_authorization() function
* return the result of the above function call
*/
diff --git a/modules/cache/cache_util.h b/modules/cache/cache_util.h
index b845d2d27d..8d62288843 100644
--- a/modules/cache/cache_util.h
+++ b/modules/cache/cache_util.h
@@ -264,7 +264,7 @@ int cache_check_freshness(cache_handle_t *h, cache_request_rec *cache,
* Try obtain a cache wide lock on the given cache key.
*
* If we return APR_SUCCESS, we obtained the lock, and we are clear to
- * proceed to the backend. If we return APR_EEXISTS, the the lock is
+ * proceed to the backend. If we return APR_EEXISTS, then the lock is
* already locked, someone else has gone to refresh the backend data
* already, so we must return stale data with a warning in the mean
* time. If we return anything else, then something has gone pear
diff --git a/modules/filters/mod_charset_lite.c b/modules/filters/mod_charset_lite.c
index e05517b851..d991c12bbd 100644
--- a/modules/filters/mod_charset_lite.c
+++ b/modules/filters/mod_charset_lite.c
@@ -1026,7 +1026,7 @@ static apr_status_t xlate_in_filter(ap_filter_t *f, apr_bucket_brigade *bb,
* Content-Length can't be unset here because that would break
* being able to read the request body.
* Processing of chunked request bodies is not impacted by this
- * filter since the the length was not declared anyway.
+ * filter since the length was not declared anyway.
*/
ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, f->r,
"Request body length may change, resulting in "
diff --git a/modules/filters/mod_ext_filter.c b/modules/filters/mod_ext_filter.c
index 4f97acae07..9f183f69bc 100644
--- a/modules/filters/mod_ext_filter.c
+++ b/modules/filters/mod_ext_filter.c
@@ -635,7 +635,7 @@ static apr_status_t init_filter_instance(ap_filter_t *f)
/* drain_available_output():
*
* if any data is available from the filter, read it and append it
- * to the the bucket brigade
+ * to the bucket brigade
*/
static apr_status_t drain_available_output(ap_filter_t *f,
apr_bucket_brigade *bb)
diff --git a/modules/filters/mod_sed.c b/modules/filters/mod_sed.c
index 607370b51b..2f0950ec28 100644
--- a/modules/filters/mod_sed.c
+++ b/modules/filters/mod_sed.c
@@ -312,7 +312,7 @@ static apr_status_t sed_response_filter(ap_filter_t *f,
* evaluation is allocated on request's pool so it will be cleared once
* request is over.
*
- * If flush bucket is found then append the the flush bucket to ctx->bb
+ * If flush bucket is found then append the flush bucket to ctx->bb
* and pass it to next filter. There may be some data which will still be
* in sed's internal buffer which can't be flushed until new line
* character is arrived.
diff --git a/modules/http2/mod_h2/h2_response.h b/modules/http2/mod_h2/h2_response.h
index d6174f5b68..27374820f5 100644
--- a/modules/http2/mod_h2/h2_response.h
+++ b/modules/http2/mod_h2/h2_response.h
@@ -16,7 +16,7 @@
#ifndef __mod_h2__h2_response__
#define __mod_h2__h2_response__
-/* h2_response is just the data belonging the the head of a HTTP response,
+/* h2_response is just the data belonging to the head of a HTTP response,
* suitable prepared to be fed to nghttp2 for response submit.
*/
typedef struct h2_headers {
diff --git a/modules/http2/sandbox/httpd/mod_ssl-alpn/ssl_engine_kernel.c b/modules/http2/sandbox/httpd/mod_ssl-alpn/ssl_engine_kernel.c
index 387c0bf745..a7b62a6867 100644
--- a/modules/http2/sandbox/httpd/mod_ssl-alpn/ssl_engine_kernel.c
+++ b/modules/http2/sandbox/httpd/mod_ssl-alpn/ssl_engine_kernel.c
@@ -1737,7 +1737,7 @@ SSL_SESSION *ssl_callback_GetSessionCacheEntry(SSL *ssl,
/*
* This callback function is executed by OpenSSL whenever a
- * SSL_SESSION is removed from the the internal OpenSSL cache.
+ * SSL_SESSION is removed from the internal OpenSSL cache.
* We use this to remove the SSL_SESSION in the inter-process
* disk-cache, too.
*/
diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c
index 6b1dc3f237..265a280973 100644
--- a/modules/ssl/ssl_engine_kernel.c
+++ b/modules/ssl/ssl_engine_kernel.c
@@ -1769,7 +1769,7 @@ SSL_SESSION *ssl_callback_GetSessionCacheEntry(SSL *ssl,
/*
* This callback function is executed by OpenSSL whenever a
- * SSL_SESSION is removed from the the internal OpenSSL cache.
+ * SSL_SESSION is removed from the internal OpenSSL cache.
* We use this to remove the SSL_SESSION in the inter-process
* disk-cache, too.
*/
diff --git a/server/core.c b/server/core.c
index 4d1a4aa072..3ad1931a89 100644
--- a/server/core.c
+++ b/server/core.c
@@ -1130,7 +1130,7 @@ AP_DECLARE(apr_off_t) ap_get_limit_req_body(const request_rec *r)
/*****************************************************************
*
* Commands... this module handles almost all of the NCSA httpd.conf
- * commands, but most of the old srm.conf is in the the modules.
+ * commands, but most of the old srm.conf is in the modules.
*/
diff --git a/server/mpm/netware/mpm_netware.c b/server/mpm/netware/mpm_netware.c
index 8999063a1a..a51d32fa60 100644
--- a/server/mpm/netware/mpm_netware.c
+++ b/server/mpm/netware/mpm_netware.c
@@ -1203,7 +1203,7 @@ static int CommandLineInterpreter(scr_t screenID, const char *commandLine)
ActivateScreen (getscreenhandle());
/* If an instance id was not given but the nlm is loaded in
- protected space, then the the command belongs to the
+ protected space, then the command belongs to the
OS address space instance to pass it on. */
pID = strstr (szcommandLine, "-p");
if ((pID == NULL) && nlmisloadedprotected())
--
cgit v1.2.3