cvs: phpdoc-es /features safe-mode.xml
| From: | Rafael Martinez | Date: | Sun, 02 Jun 2002 20:31:13 +0000 |
| Subject: | cvs: phpdoc-es /features safe-mode.xml | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969346153@lists.php.net to get a copy of this message | ||
rafael Sun Jun 2 16:31:13 2002 EDT
Added files:
/phpdoc-es/features safe-mode.xml
Log:
Translation updated to PHP 4.x
Index: phpdoc-es/features/safe-mode.xml +++ phpdoc-es/features/safe-mode.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.25 Maintainer: manuelf Status: ready --> <chapter id="features.safe-mode"> <title>Modo Seguro (Safe Mode)</title> <para> El Modo Seguro de PHP es un intento para resolver el problema de la seguridad en un servidor compartido. Tratar de resolver este problema al nivel de PHP es arquitectónicamente incorrecto, pero ya que las alternativas en un servidor web y a niveles de sistemas operativos no son tan realistas, mucha gente, especialmente la de proveedores de Internet (ISP), usa el Modo Seguro por ahora. </para> <para> <table> <title>Las directivas de Configuración que controlan el Modo Seguro son:</title> <tgroup cols="2"> <thead> <row> <entry>Directiva</entry> <entry>Valor por Omisión</entry> </row> </thead> <tbody> <row> <entry> <link linkend="ini.safe-mode">safe_mode</link> </entry> <entry><literal>Off</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-gid">safe_mode_gid</link> </entry> <entry><literal>0</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-include-dir">safe_mode_include_dir</link> </entry> <entry><literal>""</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> </entry> <entry><literal>1</literal></entry> </row> <row> <entry> <link linkend="ini.open-basedir">open_basedir</link> </entry> <entry><literal>""</literal></entry> </row> <row> <entry> <literal>safe_mode_allowed_env_vars</literal> </entry> <entry><literal>PHP_</literal></entry> </row> <row> <entry> <literal>safe_mode_protected_env_vars</literal> </entry> <entry><literal>LD_LIBRARY_PATH</literal></entry> </row> <row> <entry> <literal>disable_functions</literal> </entry> <entry><literal>""</literal></entry> </row> </tbody> </tgroup> </table> </para> <para> Cuando <link linkend="ini.safe-mode">safe_mode</link> está en On, el PHP verifica si el dueño del script actual coincide con el dueño del fichero a ser operado por una función de fichero. Por ejemplo: <programlisting role="ls"> <![CDATA[ -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd ]]> </programlisting> Corriendo este script.php <programlisting role="php"> <![CDATA[ <?php readfile('/etc/passwd'); ?> ]]> </programlisting> resulta in este error cuando Modo Seguro está habilitado: <screen> <![CDATA[ Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2 ]]> </screen> </para> <para> Sin embargo, pueden haber ambientes donde una estricta verificación del <literal>UID</literal> no es apropiada, y una relajada verificación del <literal>GID</literal> es suficiente. Esto es soportado por medio del switch <link linkend="ini.safe-mode-gid">safe_mode_gid</link>. Seteándolo a <literal>On</literal> hace la verificación relajada <literal>GID</literal>, seteándolo a <literal>Off</literal> (el valor por omisión) hace la verificación del <literal>UID</literal>. </para> <para> Si en vez del <link linkend="ini.safe-mode">safe_mode</link>, Ud. setea un directorio <link linkend="ini.open-basedir">open_basedir</link>, entonces todas las operaciones de fichero estarán limitadas a los ficheros bajo ese directorio especificado. Por ejemplo (ejemplo de httpd.conf de Apache): <programlisting role="ini"> <![CDATA[ <Directory /docroot> php_admin_value open_basedir /docroot </Directory> ]]> </programlisting> Si Ud. corre el mismo script.php con este seteo <link linkend="ini.open-basedir">open_basedir</link>, entonces este es el resultado: <screen> <![CDATA[ Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2 ]]> </screen> </para> <para> Ud. también puede inhabilitar funciones individuales. Note que la directiva disable_functions no puede ser usada fuera del fichero &php.ini; lo que significa que Ud. no puede inhabilitar funciones en los principios per-virtualhost o per-directory en su fichero httpd.conf. Si agregamos esto a nuestro fichero &php.ini;: <programlisting role="ini"> <![CDATA[ disable_functions readfile,system ]]> </programlisting> Entonces obtenemos esta salida: <screen> <![CDATA[ Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2 ]]> </screen> </para> <sect1 id="features.safe-mode.functions"> <title>Funciones restringidas/inhabilitadas por Modo Seguro</title> <para> Esta es una lista probablemente incompleta y posiblemente incorrecta de las funciones limitadas por <link linkend="features.safe-mode">safe mode</link>. <!-- TODO: add ¬e.sm.*; to the functions mentioned here. That entity should link to this section --> <table> <title>Funciones limitadas por Modo Seguro</title> <tgroup cols="2"> <thead> <row> <entry>Función</entry> <entry>Limitaciones</entry> </row> </thead> <tbody> <row> <entry><function>dbmopen</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>dbase_open</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_rowcount</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_retrieve</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>ifx_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>ingres_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>mysql_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>pg_loimport</function></entry> <entry>&sm.uidcheck;</entry> <!-- source TODO: there is no PHP-warning for that safe-mode-restriction --> </row> <row> <entry><function>posix_mkfifo</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>putenv</function></entry> <entry>Obecede las ini-directivas safe_mode_protected_env_vars y safe_mode_allowed_env_vars. Vea también la documentación de <function>putenv</function></entry> <!-- TODO: document those directives in chapters/config.xml --> </row> <row> <entry><function>move_uploaded_file</function></entry> <entry>&sm.uidcheck; <!-- TODO: check this --></entry> </row> <!-- TODO: from here on, add warning to the function itself --> <row> <entry><function>chdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>dl</function></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><link linkend="language.operators.execution">backtick operator</link></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>shell_exec</function> (equivalencia funcional de backticks)</entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>exec</function></entry> <entry>Ud. puede correr sólo ejecutables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>system</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>passthru</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>popen</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> <!-- TODO: not sure. popen uses a completely different implementation Don't know why, don't know whether it's behaving the same --> </row> <row> <entry><function>mkdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>rmdir</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>rename</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;<!-- on the old name only, it seems. Is rename preventing moving files? --></entry> </row> <row> <entry><function>unlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>copy</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (en <parameter>source</parameter> y <parameter>target</parameter>) </entry> </row> <row> <entry><function>chgrp</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chown</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chmod</function></entry> <entry>&sm.uidcheck; Además, Ud. no puede setear los bits de SUID, SGID y sticky</entry> </row> <row> <entry><function>touch</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>symlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo el target es comprobado)</entry> </row> <row> <entry><function>link</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo the target es comprobado)</entry> </row> <row> <entry><function>getallheaders</function></entry> <entry>En Modo Seguro, las cabeceras que empiezan con 'authorization' (insensitivo al tipo de letra) no serán retornadas. Advertencia: esto está roto por la implementación de aol-server de <function>getallheaders</function>!</entry> </row> <row> <entry><function>header</function></entry> <entry>En Modo Seguro, el UID del script está agregado a la parte <literal>realm</literal> de la cabecera <literal>WWW-Authenticate</literal> si Ud. setea esta cabecera (usado por HTTP Authentication).</entry> </row> <row> <entry> <function>highlight_file</function>, <function>show_source</function> </entry> <entry> &sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo afectado desde PHP 4.2.1) </entry> </row> <row> <entry> <function>parse_ini_file</function> </entry> <entry> &sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo afectado desde PHP 4.2.1) </entry> </row> <row> <entry>Cualquier función que usa <filename>php4/main/fopen_wrappers.c</filename> </entry> <entry>??</entry> </row> </tbody> </tgroup> </table> </para> </sect1> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
Index: phpdoc-es/features/safe-mode.xml +++ phpdoc-es/features/safe-mode.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.25 Maintainer: manuelf Status: ready --> <chapter id="features.safe-mode"> <title>Modo Seguro (Safe Mode)</title> <para> El Modo Seguro de PHP es un intento para resolver el problema de la seguridad en un servidor compartido. Tratar de resolver este problema al nivel de PHP es arquitectónicamente incorrecto, pero ya que las alternativas en un servidor web y a niveles de sistemas operativos no son tan realistas, mucha gente, especialmente la de proveedores de Internet (ISP), usa el Modo Seguro por ahora. </para> <para> <table> <title>Las directivas de Configuración que controlan el Modo Seguro son:</title> <tgroup cols="2"> <thead> <row> <entry>Directiva</entry> <entry>Valor por Omisión</entry> </row> </thead> <tbody> <row> <entry> <link linkend="ini.safe-mode">safe_mode</link> </entry> <entry><literal>Off</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-gid">safe_mode_gid</link> </entry> <entry><literal>0</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-include-dir">safe_mode_include_dir</link> </entry> <entry><literal>""</literal></entry> </row> <row> <entry> <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> </entry> <entry><literal>1</literal></entry> </row> <row> <entry> <link linkend="ini.open-basedir">open_basedir</link> </entry> <entry><literal>""</literal></entry> </row> <row> <entry> <literal>safe_mode_allowed_env_vars</literal> </entry> <entry><literal>PHP_</literal></entry> </row> <row> <entry> <literal>safe_mode_protected_env_vars</literal> </entry> <entry><literal>LD_LIBRARY_PATH</literal></entry> </row> <row> <entry> <literal>disable_functions</literal> </entry> <entry><literal>""</literal></entry> </row> </tbody> </tgroup> </table> </para> <para> Cuando <link linkend="ini.safe-mode">safe_mode</link> está en On, el PHP verifica si el dueño del script actual coincide con el dueño del fichero a ser operado por una función de fichero. Por ejemplo: <programlisting role="ls"> <![CDATA[ -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd ]]> </programlisting> Corriendo este script.php <programlisting role="php"> <![CDATA[ <?php readfile('/etc/passwd'); ?> ]]> </programlisting> resulta in este error cuando Modo Seguro está habilitado: <screen> <![CDATA[ Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2 ]]> </screen> </para> <para> Sin embargo, pueden haber ambientes donde una estricta verificación del <literal>UID</literal> no es apropiada, y una relajada verificación del <literal>GID</literal> es suficiente. Esto es soportado por medio del switch <link linkend="ini.safe-mode-gid">safe_mode_gid</link>. Seteándolo a <literal>On</literal> hace la verificación relajada <literal>GID</literal>, seteándolo a <literal>Off</literal> (el valor por omisión) hace la verificación del <literal>UID</literal>. </para> <para> Si en vez del <link linkend="ini.safe-mode">safe_mode</link>, Ud. setea un directorio <link linkend="ini.open-basedir">open_basedir</link>, entonces todas las operaciones de fichero estarán limitadas a los ficheros bajo ese directorio especificado. Por ejemplo (ejemplo de httpd.conf de Apache): <programlisting role="ini"> <![CDATA[ <Directory /docroot> php_admin_value open_basedir /docroot </Directory> ]]> </programlisting> Si Ud. corre el mismo script.php con este seteo <link linkend="ini.open-basedir">open_basedir</link>, entonces este es el resultado: <screen> <![CDATA[ Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2 ]]> </screen> </para> <para> Ud. también puede inhabilitar funciones individuales. Note que la directiva disable_functions no puede ser usada fuera del fichero &php.ini; lo que significa que Ud. no puede inhabilitar funciones en los principios per-virtualhost o per-directory en su fichero httpd.conf. Si agregamos esto a nuestro fichero &php.ini;: <programlisting role="ini"> <![CDATA[ disable_functions readfile,system ]]> </programlisting> Entonces obtenemos esta salida: <screen> <![CDATA[ Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2 ]]> </screen> </para> <sect1 id="features.safe-mode.functions"> <title>Funciones restringidas/inhabilitadas por Modo Seguro</title> <para> Esta es una lista probablemente incompleta y posiblemente incorrecta de las funciones limitadas por <link linkend="features.safe-mode">safe mode</link>. <!-- TODO: add ¬e.sm.*; to the functions mentioned here. That entity should link to this section --> <table> <title>Funciones limitadas por Modo Seguro</title> <tgroup cols="2"> <thead> <row> <entry>Función</entry> <entry>Limitaciones</entry> </row> </thead> <tbody> <row> <entry><function>dbmopen</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>dbase_open</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_rowcount</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_retrieve</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>ifx_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>ingres_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>mysql_*</function></entry> <entry>restricciones sql_safe_mode, (!= safe mode)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>pg_loimport</function></entry> <entry>&sm.uidcheck;</entry> <!-- source TODO: there is no PHP-warning for that safe-mode-restriction --> </row> <row> <entry><function>posix_mkfifo</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>putenv</function></entry> <entry>Obecede las ini-directivas safe_mode_protected_env_vars y safe_mode_allowed_env_vars. Vea también la documentación de <function>putenv</function></entry> <!-- TODO: document those directives in chapters/config.xml --> </row> <row> <entry><function>move_uploaded_file</function></entry> <entry>&sm.uidcheck; <!-- TODO: check this --></entry> </row> <!-- TODO: from here on, add warning to the function itself --> <row> <entry><function>chdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>dl</function></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><link linkend="language.operators.execution">backtick operator</link></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>shell_exec</function> (equivalencia funcional de backticks)</entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>exec</function></entry> <entry>Ud. puede correr sólo ejecutables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>system</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>passthru</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> </row> <row> <entry><function>popen</function></entry> <entry>Ud. puede correr sólo ejecutatables dentro del<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>. Por razones prácticas, no está actualmente permitido tener componentes <literal>..</literal> en la ruta del fichero ejecutable.</entry> <!-- TODO: not sure. popen uses a completely different implementation Don't know why, don't know whether it's behaving the same --> </row> <row> <entry><function>mkdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>rmdir</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>rename</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;<!-- on the old name only, it seems. Is rename preventing moving files? --></entry> </row> <row> <entry><function>unlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>copy</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (en <parameter>source</parameter> y <parameter>target</parameter>) </entry> </row> <row> <entry><function>chgrp</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chown</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chmod</function></entry> <entry>&sm.uidcheck; Además, Ud. no puede setear los bits de SUID, SGID y sticky</entry> </row> <row> <entry><function>touch</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>symlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo el target es comprobado)</entry> </row> <row> <entry><function>link</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo the target es comprobado)</entry> </row> <row> <entry><function>getallheaders</function></entry> <entry>En Modo Seguro, las cabeceras que empiezan con 'authorization' (insensitivo al tipo de letra) no serán retornadas. Advertencia: esto está roto por la implementación de aol-server de <function>getallheaders</function>!</entry> </row> <row> <entry><function>header</function></entry> <entry>En Modo Seguro, el UID del script está agregado a la parte <literal>realm</literal> de la cabecera <literal>WWW-Authenticate</literal> si Ud. setea esta cabecera (usado por HTTP Authentication).</entry> </row> <row> <entry> <function>highlight_file</function>, <function>show_source</function> </entry> <entry> &sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo afectado desde PHP 4.2.1) </entry> </row> <row> <entry> <function>parse_ini_file</function> </entry> <entry> &sm.uidcheck; &sm.uidcheck.dir; (Nota: sólo afectado desde PHP 4.2.1) </entry> </row> <row> <entry>Cualquier función que usa <filename>php4/main/fopen_wrappers.c</filename> </entry> <entry>??</entry> </row> </tbody> </tgroup> </table> </para> </sect1> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->