Changeset 626
- Timestamp:
- 04/21/07 20:13:47 (1 year ago)
- Files:
-
- traduc/branches/bv747/manuel/ref/create_function.sgml (modified) (1 diff)
- traduc/branches/bv747/manuel/release.sgml (modified) (2 diffs)
- traduc/branches/bv747/manuel/runtime.sgml (modified) (1 diff)
- traduc/branches/bv747/manuel/version.sgml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/branches/bv747/manuel/ref/create_function.sgml
r104 r626 383 383 </refsect1> 384 384 385 385 <refsect1 id="sql-createfunction-security"> 386 <title>Écrire des fonctions <literal>SECURITY DEFINER</literal> en toute 387 sécurité</title> 388 389 <para> 390 Comme une fonction <literal>SECURITY DEFINER</literal> est exécutée 391 avec les droits de l'utilisateur qui l'a créé, une certaine attention 392 est nécessaire pour s'assurer que la fonction ne peut pas être 393 utilisée de façon maline. Pour des raisons de sécurité, 394 <xref linkend="guc-search-path"> doit être configuré pour exclure tout 395 schéma où des utilisateurs qui ne sont pas de confiance pourraient 396 écrire. Ceci empêche des utilisateurs malveillants de créer des 397 objets qui masqueraient des objets utilisés par la fonction. Dans 398 cette idée, le schéma des tables temporaires est particulièrement 399 important car il est le premier schéma dans lequel a lieu la recherche 400 et il est modifiable par tout utilisateur. Une solution est de forcer 401 la recherche à ne prendre en condition ce schéma qu'en dernier lieu. 402 Pour cela, écrire <literal>pg_temp</> en tant que dernière entrée de 403 <varname>search_path</>. La fonction suivante illustre une utilisation 404 sûre : 405 </para> 406 407 <programlisting> 408 CREATE FUNCTION verifie_motdepasse(unom TEXT, motpasse TEXT) 409 RETURNS BOOLEAN AS $$ 410 DECLARE ok BOOLEAN; 411 ancien_path TEXT; 412 BEGIN 413 -- Sauvegarder l'ancien search_path ; 414 -- remarquez que nous devons qualifier current_setting 415 -- pour nous assurer que nous appelons la bonne fonction 416 ancien_path := pg_catalog.current_setting('search_path'); 417 418 -- Configurer un search_path sécurisé : schémas de confiance, puis 'pg_temp'. 419 -- Nous initialisons is_local = true pour que l'ancienne valeur 420 -- soit restaurée au cas où une erreur survienne avant que nous 421 -- n'atteignons la fin de la fonction. 422 PERFORM pg_catalog.set_config('search_path', 'admin, pg_temp', true); 423 424 -- Effectuer le travail sécurisé de la fonction. 425 SELECT (motdepasse = $2) INTO ok 426 FROM motsdepasse 427 WHERE nomutilisateur = $1; 428 429 -- Restaurer le search_path de l'appelant 430 PERFORM pg_catalog.set_config('search_path', ancien_path, true); 431 432 RETURN ok; 433 END; 434 $$ LANGUAGE plpgsql SECURITY DEFINER; 435 </programlisting> 436 437 </refsect1> 438 386 439 <refsect1 id="sql-createfunction-compat"> 387 440 <title>Compatibilité</title> traduc/branches/bv747/manuel/release.sgml
r563 r626 5 5 <appendix id="release"> 6 6 <title>Notes de version</title> 7 8 <sect1 id="release-7-4-17"> 9 <title>Version 7.4.17</title> 10 11 <note> 12 <title>Date de sortie</title> 13 <simpara>2007-04-23</simpara> 14 </note> 15 16 <para> 17 Cette version contient quelques corrections de la 7.4.16, dont la 18 correction d'une faille de sécurité. 19 </para> 20 21 <sect2> 22 <title>Migration vers la version 7.4.17</title> 23 24 <para> 25 Une sauvegarde/restauration n'est pas requise pour ceux utilisant une 26 version 7.4.X. Néanmoins, si vous mettez à jour à partir d'une version 27 antérieure à la 7.4.11, voir les notes de sortie de la 7.4.11. 28 </para> 29 30 </sect2> 31 32 <sect2> 33 <title>Modifications</title> 34 35 <itemizedlist> 36 37 <listitem> 38 <para> 39 Supporte le placement explicite du schéma des tables temporaires dans 40 <varname>search_path</>, et désactive sa recherche pour les fonctions 41 et opérateurs (Tom) 42 </para> 43 <para> 44 Ceci est nécessaire pour autoriser une fonction en mode security-definer 45 à configurer une valeur sécurisée de <varname>search_path</>. Sans cela, 46 un utilisateur SQL sans droit peut utiliser des objets temporaires pour 47 exécuter du code avec une fonction possédant les droits du créateur de 48 la fonction (CVE-2007-2138). Voir <command>CREATE FUNCTION</> pour plus 49 d'informations. 50 </para> 51 </listitem> 52 53 <listitem> 54 <para> 55 Correction d'arrêts brutaux dans <filename>/contrib/tsearch2</> (Teodor) 56 </para> 57 </listitem> 58 59 <listitem> 60 <para> 61 Correction d'un bogue pouvant corrompre des données dans la façon 62 dont <command>VACUUM FULL</> gère les chaînes <command>UPDATE</> 63 (Tom, Pavan Deolasee) 64 </para> 65 </listitem> 66 67 <listitem> 68 <para> 69 Correction d'un PANIC lors de l'élargissement d'un index haché 70 (bug introduit en 7.4.15) (Tom) 71 </para> 72 </listitem> 73 74 </itemizedlist> 75 76 </sect2> 77 </sect1> 7 78 8 79 <sect1 id="release-7-4-16"> … … 3443 3514 </sect2> 3444 3515 </sect1> 3516 3517 <sect1 id="release-7-3-19"> 3518 <title>Version 7.3.19</title> 3519 3520 <note> 3521 <title>Date de sortie</title> 3522 <simpara>2007-04-23</simpara> 3523 </note> 3524 3525 <para> 3526 Cette version contient quelques corrections de la 7.3.18, dont la 3527 correction d'une faille de sécurité. 3528 </para> 3529 3530 <sect2> 3531 <title>Migration vers la version 7.3.19</title> 3532 3533 <para> 3534 Une sauvegarde/restauration n'est pas requise pour ceux utilisant une 3535 version 7.3.X. Néanmoins, si vous mettez à jour à partir d'une version 3536 antérieure à la 7.3.13, voir les notes de sortie de la 7.3.13. 3537 </para> 3538 3539 </sect2> 3540 3541 <sect2> 3542 <title>Modifications</title> 3543 3544 <itemizedlist> 3545 3546 <listitem> 3547 <para> 3548 Supporte le placement explicite du schéma des tables temporaires dans 3549 <varname>search_path</>, et désactive sa recherche pour les fonctions 3550 et opérateurs (Tom) 3551 </para> 3552 <para> 3553 Ceci est nécessaire pour autoriser une fonction en mode security-definer 3554 à configurer une valeur sécurisée de <varname>search_path</>. Sans cela, 3555 un utilisateur SQL sans droit peut utiliser des objets temporaires pour 3556 exécuter du code avec une fonction possédant les droits du créateur de 3557 la fonction (CVE-2007-2138). Voir <command>CREATE FUNCTION</> pour plus 3558 d'informations. 3559 </para> 3560 </listitem> 3561 3562 <listitem> 3563 <para> 3564 Correction d'un bogue pouvant corrompre des données dans la façon 3565 dont <command>VACUUM FULL</> gère les chaînes <command>UPDATE</> 3566 (Tom, Pavan Deolasee) 3567 </para> 3568 </listitem> 3569 3570 </itemizedlist> 3571 3572 </sect2> 3573 </sect1> 3445 3574 3446 3575 <sect1 id="release-7-3-18"> traduc/branches/bv747/manuel/runtime.sgml
r548 r626 2010 2010 mentionné, alors il sera cherché dans l'ordre spécifié. Si 2011 2011 <literal>pg_catalog</> ne fait pas partie du chemin, alors il sera 2012 cherché <emphasis>avant</> tout élément du chemin. Il devrait aussi être 2013 noté que le schéma des tables temporaires, 2014 <literal>pg_temp_<replaceable>nnn</></>, est cherché implicitement avant 2015 tout autre. 2012 cherché <emphasis>avant</> tout élément du chemin. 2013 </para> 2014 2015 <para> 2016 De même, la recherche des schémas passe toujours par le schéma des 2017 tables temporaires, <literal>pg_temp_<replaceable>nnn</></>, si ce 2018 dernier existe. Il est toujours possible de l'ajouter dans le chemin 2019 en utilisant l'alias <literal>pg_temp</>. S'il ne fait pas partie 2020 du chemin, la recherche commencera par lui (avant même 2021 <literal>pg_catalog</>). Néanmoins, seuls les noms de relation (table, 2022 vue, séquence, etc.) et de type de données sont recherchés dans le 2023 schéma temporaire. Aucune fonction et aucun opérateur n'y sera 2024 recherché. 2016 2025 </para> 2017 2026 traduc/branches/bv747/manuel/version.sgml
r570 r626 1 <!entity version "7.4.1 6">1 <!entity version "7.4.17"> 2 2 <!entity majorversion "7.4">
