Stoa :: Páginas dinâmicas com PHP e MySQL :: Blog :: Conversão objeto p/ array pode ser explorada (exploited)?

maio 09, 2007

user icon

Segundo a documentação do php.net,

 

If you convert an object to an array, you get the properties (member variables) of that object as the array's elements. The keys are the member variable names with a few notable exceptions: private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name. These prepended values have null bytes on either side. This can result in some unexpected behaviour.
(Página original)

 

Isso significa que o usuário de uma interface pode explorar (exploit) essa funcionalidade para obter acesso a membros aos quais ele não deveria ter acesso?

Palavras-chave: PHP, PHP (Arrays), PHP (Conversão para array), PHP (Exploits)

Postado por Renato Callado Borges em Páginas dinâmicas com PHP e MySQL

Comentários

  1. Renato Callado Borges escreveu:

    Acabo de ler que

    Object-oriented languages, such as Java, demand that the programmer set a level of privacy for all properties and methods. This means that access can be limited to only those features needed to use the object effectively, and properties meant only for internal use can be safely tucked away. PHP has no such protection. You can access all the fields of an object, which can cause problems if a property isn't meant to be changed.

    Zandstra, Matt. Teach Yourself PHP in 24h. SAMS:Indianapolis, 2000. pp.128-9.

    De modo que o princípio adotado pelo PHP4 é o de que todos podem acessar tudo. No mesmo item do livro o autor fala que não existem private, protected, etc, mas como no php.net fala-se disso suponho que é um acréscimo do php5.

    Agora, suponho que muitas funções do Stoa tenham como argumentos dados entrados pelos usuários. Estes dados são validados, ie, verifica-se antes de adicionar uma informação se esta tem formato esperado (ie, número é número, imagem é imagem, etc?). Vou dar uma olhada no código e complemento depois.

    Renato Callado BorgesRenato Callado Borges ‒ segunda, 14 maio 2007, 09:22 BRT # Link |

  2. Renato Callado Borges escreveu:

    Da documentação do php no php.net, "Chapter 30. User Submitted Data":

    The greatest weakness in many PHP programs is not inherent in the language itself, but merely an issue of code not being written with security in mind. For this reason, you should always take the time to consider the implications of a given piece of code, to ascertain the possible damage if an unexpected variable is submitted to it.
    ...

    You should always carefully examine your code to make sure that any variables being submitted from a web browser are being properly checked, and ask yourself the following questions:

    • Will this script only affect the intended files?
    • Can unusual or undesirable data be acted upon?
    • Can this script be used in unintended ways?
    • Can this be used in conjunction with other scripts in a negative manner?
    • Will any transactions be adequately logged?

     

    A documentação do mesmo site tem outros tópicos de segurança.

    Renato Callado BorgesRenato Callado Borges ‒ segunda, 14 maio 2007, 09:47 BRT # Link |

Você deve entrar no sistema para escrever um comentário.

Termo de Responsabilidade

Todo o conteúdo desta página é de inteira responsabilidade do usuário. O Stoa, assim como a Universidade de São Paulo, não necessariamente corroboram as opiniões aqui contidas.