Antes de iniciar
Este tutorial se destina a desenvolvedores em jQuery Mobile interessados em proteger os seus aplicativos. Pressupõe que o leitor tem conhecimento básico sobre o desenvolvimento de aplicativos da Web usando PHP, MySQL, JavaScript, XHTML e CSS. Além disso, este tutorial não é completo; destina-se a ser uma introdução à segurança de aplicativos da Web. Para ler mais sobre os temas abordados aqui e outros tópicos relevantes, consulte Recursos.
Com o surgimento dos smartphones e dispositivos semelhantes, a segurança dos aplicativos da Web foi ampliada para incluir aplicativos remotos. Por causa das limitações impostas pelas interfaces de vários dos dispositivos desse tipo, às vezes os desenvolvedores trabalham com a premissa falsa de que a validação das entradas no lado do cliente é suficiente para a proteção contra ataques. Entretanto, as solicitações enviadas pelos aplicativos remotos podem ser manipuladas da mesma forma que os aplicativos da Web tradicionais. Por causa dessa vulnerabilidade, não é possível confiar no cliente. Com os dados sensíveis às vezes armazenados em dispositivos e nos servidores que eles usam, a proteção dos usuários contra hackers "do mal" é crítica. Este tutorial mostra como vários tipos de vulnerabilidades ocorrem e algumas das contramedidas que podem ser estabelecidas para mitigar os invasores que tentam utilizá-las. Os seguintes tipos de vulnerabilidades são abordados:
- Scripts de sites cruzados
- Falsificação de solicitação em sites cruzados
- Controle de acesso quebrado
- Injeção de SQL
- Inclusão de arquivos
- Injeção de comandos de OS
- Injeção de linguagem de script
- Criação de arquivos arbitrários
Todas as vulnerabilidades e contramedidas são demonstradas por meio de um aplicativo de amostra desenvolvido com jQuery Mobile, PHP e MySQL. (Consulte Download para obter um arquivo .zip com o código de amostra.)
Para concluir este tutorial, são necessárias as seguintes ferramentas:
- Servidor da Web — Pode-se usar qualquer servidor da Web com suporte para PHP. Muitas utilizações deste tutorial são específicas do Windows, mas podem ser adaptadas para outros sistemas operacionais. Sugerimos o servidor da Web Apache ou o IBM HTTPServer.
- PHP — Já que alguns ataques descritos não funcionam com a versão mais recente, foi usado o PHP 5.3.1. As incompatibilidades desse tipo são indicadas ao longo do tutorial.
- MySQL — Este tutorial usa o MySQL, um banco de dados de software livre. A versão 5.1.41 foi usada neste tutorial, mas as outras versões podem funcionar bem.
- Proxy de depuração da Web — Como há necessidade de uma forma de manipular solicitações de HTTP, um proxy de depuração da Web é muito útil. Ao longo deste tutorial, o Fiddler v2.3.2.4 é usado, mas qualquer outro proxy de depuração da Web que permite a modificação de solicitações funciona.
- jQuery Mobile — O frontend do aplicativo de amostra desenvolvido neste tutorial usa o jQuery Mobile 1.0 Alpha 3.
Consulte Recursos para obter links úteis.