Files
archived-doc-pt-br/security/variables.xml
2025-08-28 17:13:49 -03:00

115 lines
3.9 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: f0ed705e1ac34fed4c92979f63bee74c382f991b Maintainer: leonardolara Status: ready --><!-- CREDITS: narigone, fabioluciano, leonardolara -->
<!-- splitted from ./index.xml, last change in rev 1.66 -->
<chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook">
<title>Dados Enviados pelo Usuário</title>
<para>
A maior fraqueza na maioria dos programas <acronym>PHP</acronym> não é inerente à
linguagem em si, mas meramente um problema de código escrito desconsiderando a
segurança. Por essa razão, você sempre deve investir um pouco de tempo
considerando as implicações de um certo pedaço de código, para ter certeza
que o dano possí­vel se uma variável não esperada for submetida ao mesmo.
<example>
<title>Uso Perigoso de Variáveis</title>
<programlisting role="php">
<![CDATA[
<?php
// remove um arquivo do diretório home do usuário... ou talvez
// de outra pessoa?
unlink ($evil_var);
// Escreve registro do acesso... ou talvez uma entrada em /etc/passwd?
fwrite ($fp, $evil_var);
// Executa algo trivial... ou rm -rf *?
system ($evil_var);
exec ($evil_var);
?>
]]>
</programlisting>
</example>
</para>
<para>
Você sempre deve examinar cuidadosamente seu código para se assegurar que
quaisquer variáveis sendo enviadas do navegador web estão sendo checadas
de maneira correta, e faz a si mesmo as seguintes perguntas:
<itemizedlist>
<listitem>
<simpara>
Seu script só afetará os arquivos desejados?
</simpara>
</listitem>
<listitem>
<simpara>
Dados incomuns ou indesejados podem ser utilizados?
</simpara>
</listitem>
<listitem>
<simpara>
Esse script pode ser usado de maneiras não intencionadas?
</simpara>
</listitem>
<listitem>
<simpara>
Ele pode ser usado em conjunto com outros scripts de maneira
negativa?
</simpara>
</listitem>
<listitem>
<simpara>
As transações serão registradas adequadamente?
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Respondendo essas perguntas adequadamente enquanto escrevendo o script,
ao invés de depois, previne a reescrita indesejada quando você
precisar aumentar a segurança. Começando com essa linha de raciocí­nio,
você não garante a segurança do seu sistema, mas pode ajudar
a aumentá-la.
</para>
<para>
Melhore a segurança desabilitando configurações de conveniência que obscurecem a origem,
validade ou integridade dos dados de entrada. A criação implícita de variáveis
e a entrada não verificada podem levar a vulnerabilidades como ataques de injeção e
manipulação de dados.
</para>
<para>
Recursos como <literal>register_globals</literal> e
<literal>magic_quotes</literal> (ambos removidos no PHP 5.4.0) contribuíram
para esses riscos criando variáveis automaticamente a partir da entrada do usuário e
escapando dados inconsistentemente. Embora não esteja mais no PHP, riscos semelhantes
persistem se o tratamento de entrada for mal gerenciado.
</para>
<para>
Habilite <link linkend="function.error-reporting">error_reporting(E_ALL)</link> para
ajudar a detectar variáveis não inicializadas e validar a entrada. Use tipos estritos
(<link linkend="language.types.declarations.strict">declare(strict_types=1)</link>,
introduzido no PHP 7) para reforçar a segurança de tipos, evitar conversões de tipos não intencionais
e melhorar a segurança geral.
</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
-->