-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathvariables.xml
More file actions
117 lines (112 loc) · 4.01 KB
/
variables.xml
File metadata and controls
117 lines (112 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: f0ed705e1ac34fed4c92979f63bee74c382f991b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<!-- splitted from ./index.xml, last change in rev 1.66 -->
<chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook">
<title>Datos Enviados por el Usuario</title>
<para>
Las mayores debilidades de muchos programas <acronym>PHP</acronym> no son inherentes al
lenguaje mismo, sino simplemente un problema generado cuando se escribe
código sin pensar en la seguridad. Por esta razón, usted debería tomarse
siempre el tiempo para considerar las implicaciones de cada pedazo de
código, para averiguar el posible peligro involucrado cuando una variable
inesperada es enviada.
<example>
<title>Uso Peligroso de Variables</title>
<programlisting role="php">
<![CDATA[
<?php
// eliminar un archivo del directorio personal del usuario .. ¿o
// quizás de alguien más?
unlink ($evil_var);
// Imprimir el registro del acceso... ¿o quizás una entrada de /etc/passwd?
fwrite ($fp, $evil_var);
// Ejecutar algo trivial.. ¿o rm -rf *?
system ($evil_var);
exec ($evil_var);
?>
]]>
</programlisting>
</example>
</para>
<para>
Usted debería examinar siempre, y cuidadosamente su código para asegurarse
de que cualquier variable siendo enviada desde un navegador web sea
chequeada apropiadamente, y preguntarse a sí mismo:
<itemizedlist>
<listitem>
<simpara>
¿Este script afectará únicamente los archivos que se pretende?
</simpara>
</listitem>
<listitem>
<simpara>
¿Puede tomarse acción sobre datos inusuales o indeseados?
</simpara>
</listitem>
<listitem>
<simpara>
¿Puede ser usado este script en formas malintencionadas?
</simpara>
</listitem>
<listitem>
<simpara>
¿Puede ser usado en conjunto con otros scripts en forma negativa?
</simpara>
</listitem>
<listitem>
<simpara>
¿Serán adecuadamente registradas las transacciones?
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Al preguntarse adecuadamente estas preguntas mientras escribe su script,
en lugar de hacerlo posteriormente, usted previene una desafortunada
re-implementación del programa cuando desee incrementar el nivel de
seguridad. Al comenzar con esta mentalidad, no garantizará la seguridad de
su sistema, pero puede ayudar a mejorarla.
</para>
<para>
Mejore la seguridad deshabilitando las configuraciones de conveniencia que
oscurecen el origen, la validez o la integridad de los datos de entrada.
La creación implícita de variables y la entrada no verificada pueden llevar a
vulnerabilidades como ataques de inyección y manipulación de datos.
</para>
<para>
Características como <literal>register_globals</literal> y
<literal>magic_quotes</literal> (ambas eliminadas en PHP 5.4.0) contribuyeron
a estos riesgos al crear automáticamente variables a partir de la entrada del
usuario y escapar datos de manera inconsistente. Aunque ya no están en PHP,
riesgos similares persisten si la gestión de la entrada es incorrecta.
</para>
<para>
Habilite <link linkend="function.error-reporting">error_reporting(E_ALL)</link> para
ayudar a detectar variables no inicializadas y validar la entrada. Utilice
tipos estrictos (<link linkend="language.types.declarations.strict">declare(strict_types=1)</link>,
introducido en PHP 7) para imponer la seguridad de tipos, prevenir conversiones
de tipos no intencionadas y mejorar la seguridad general.
</para>
</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:"~/.phpdoc/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
-->