mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-24 07:02:09 +01:00
115 lines
3.9 KiB
XML
115 lines
3.9 KiB
XML
<?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
|
||
-->
|