Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 35 additions & 28 deletions reference/taint/book.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: cfe2c34143ab17e522b1594ae0902b7245f072d5 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<!-- EN-Revision: befe2b9fbe37b0925498f336632742651386b151 Maintainer: PhilDaiguille Status: ready -->

<book xml:id="book.taint" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<?phpdoc extension-membership="pecl" ?>
Expand All @@ -9,50 +8,58 @@

<preface xml:id="intro.taint">
&reftitle.intro;
<para>
Taint es una extensión que sirve para detectar código XSS (strings
corrompidos, «tainted»).
También se puede utilizar para localizar vulnerabilidades a inyecciones SQL, inyecciones
«shell», etc.
</para>
<para>
Si taint está habilitada, advertirá de si se ha proporcionado una cadena corrompida
(que venga de <varname>$_GET</varname>, <varname>$_POST</varname>
o <varname>$_COOKIE</varname>) a alguna función.
</para>
<simpara>
Taint es una extensión para detectar código XSS (cadenas corrompidas).
También se puede utilizar para localizar inyecciones SQL, inyecciones de
comandos, inyecciones de rutas de ficheros y vulnerabilidades similares.
</simpara>
<simpara>
Cuando taint está habilitada, las cadenas recibidas de la entrada del
usuario —<varname>$_GET</varname>, <varname>$_POST</varname> y
<varname>$_COOKIE</varname>— se marcan como corrompidas al inicio de la
petición, y la marca se sigue a través de las operaciones sobre cadenas.
Cuando una cadena corrompida alcanza un sumidero peligroso (salida,
consulta SQL, comando del intérprete de órdenes, ruta de fichero, ...),
taint emite una advertencia que señala ese punto. Véase
<link linkend="taint.detail">Propagación y sumideros comprobados</link>
para consultar las listas completas.
</simpara>
<simpara>
Taint es una herramienta de desarrollo y de auditoría, no una defensa en
tiempo de ejecución: únicamente informa de posibles problemas y nunca
bloquea ni altera los datos. Es deliberadamente conservadora y puede
informar de más de la cuenta, por lo que una ejecución limpia significa
solamente «nada que taint pudiera ver», nunca «demostrablemente seguro».
No se debe habilitar en entornos de producción.
</simpara>
<example>
<title>Ejemplo de <function>taint</function></title>
<title>Ejemplo de taint</title>
<programlisting role="php">
<![CDATA[
<?php
$a = trim($_GET['a']);

$nombre_fichero = '/tmp' . $a;
$salida = "¡¡¡Bienvenido, {$a} !!!";
$var = "salida";
$sql = "Select * from " . $a;
$sql .= "ooxx";
$nombre_fichero = '/tmp/' . $a;
$salida = "¡¡¡Bienvenido, {$a} !!!";
$sql = "SELECT * FROM usuarios WHERE nombre = " . $a;

echo $salida;

print $$var;

print $salida;
include $nombre_fichero;

mysql_query($sql);
mysqli_query($link, $sql);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Warning: main() [function.echo]: Attempt to echo a string that might be tainted
Warning: main() [echo]: Attempt to echo a string that might be tainted in /ruta/al/script.php on line 9

Warning: main() [function.echo]: Attempt to print a string that might be tainted
Warning: main() [print]: Attempt to print a string that might be tainted in /ruta/al/script.php on line 10

Warning: include() [function.include]: File path contains data that might be tainted
Warning: main() [include]: File path contains data that might be tainted in /ruta/al/script.php on line 11

Warning: mysql_query() [function.mysql-query]: SQL statement contains data that might be tainted
Warning: main() [mysqli_query]: SQL statement contains data that might be tainted in /ruta/al/script.php on line 12
]]>
</screen>
</example>
Expand Down
51 changes: 45 additions & 6 deletions reference/taint/configure.xml
Original file line number Diff line number Diff line change
@@ -1,19 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 94497636f2f6956ba6bf1017297d589009fbd040 Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<!-- EN-Revision: befe2b9fbe37b0925498f336632742651386b151 Maintainer: seros Status: ready -->

<section xml:id="taint.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.install;

<para>
<simpara>
&pecl.info;
<link xlink:href="&url.pecl.package;taint">&url.pecl.package;taint</link>
<link xlink:href="&url.pecl.package;taint">&url.pecl.package;taint</link>.
</simpara>

<simpara>
Se instala con <acronym>PECL</acronym>:
</simpara>
<para>
<screen>
<![CDATA[
$ pecl install taint
]]>
</screen>
</para>

<para>
El código fuente está alojado en
<link xlink:href="&url.git.hub;laruence/taint">GitHub</link>. Para compilar
la extensión a partir del código fuente:
<screen>
<![CDATA[
$ git clone https://github.com/laruence/taint.git
$ cd taint
$ phpize
$ ./configure
$ make
$ sudo make install
]]>
</screen>
</para>

</section>
<simpara>
A continuación, se habilita la extensión añadiendo
<literal>extension=taint.so</literal> (o <literal>extension=php_taint.dll</literal>
en Windows) a &php.ini;, y estableciendo
<link linkend="ini.taint.enable">taint.enable</link> a
<literal>1</literal>.
</simpara>

<warning>
<simpara>
Taint es una herramienta de desarrollo y de auditoría. No se debe
habilitar en entornos de producción: la instrumentación ralentiza todas
las peticiones y deshabilita el JIT de OPcache, y las advertencias pueden
filtrar datos de la petición a los registros.
</simpara>
</warning>
</section>

<!-- Keep this comment at the end of the file
Local variables:
Expand Down
Loading