{meta}

A melhor parceira de TI para o seu negócio English version

Adianti Forum

Conheça mais sobre com o livro:

Adianti Framework para PHP

  • Instalação e configuração;
  • Modelos e persistência;
  • Componentes de apresentação;
  • Organização e controle;
  • Desenvolvimento ágil com Studio Pro.
Ver detalhes...

Busca

Digite o termo a ser localizado:

Lista de discussões

Cadastrar no grupo adianti-tools-pt:
Neste artigo vou mostrar cinco dicas úteis para aumentar a segurança em aplicações desenvolvidas em PHP com o Adianti Framework.

1. Habilitar o Módulo Rewrite


Alguns diretórios não podem ser acessados externamente pelo usuário, pois contém arquivos com informações sensíveis (dados de acesso à bases de dados). Para evitar o acesso externo, o framework já contém arquivos com diretrizes de proteção, dentre eles:
app/config/.htaccess


Basicamente o conteúdo deste arquivo diz para o Apache impedir o acesso ao diretório:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthType Basic
AuthName "restricted area"
require valid-user


Porém, para que estes arquivos sejam levados em consideração, é preciso habilitar no Apache o módulo rewrite, que faz a interpretação destes arquivos.
a2enmod rewrite
service apache2 restart


2. Ligar Prepared Statements


Não é papel deste artigo explicar em detalhes o que é um ataque do tipo SQL Injection (pt.wikipedia.org/wiki/Injeção_de_SQL), mas resumidamente podemos dizer que é uma ameaça que se aproveita de falhas em sistemas para injetar comandos SQL maliciosos que podem obter ou alterar dados na base de dados em situações onde normalmente isto não deveria ser permitido.
Uma das principais técnicas de proteção contra SQL Injection são os Prepared Statements (en.wikipedia.org/wiki/Prepared_statement). No Adianti Framework, os Prepared Statements podem ser habilitados de maneira global nos arquivos de conexão à base de dados. No seguinte link temos alguns exemplos de como configurar os conectores de acesso à cada tipo de base de dados.
www.adianti.com.br/doc-framework-Persistence-Setup-SetupConnection

Basicamente é importante ligar a variável "prep". Assim, todas instruções SQL enviadas ao banco de dados por classes como TRepository e TRecord utilizarão Prepared Statements.

host = "192.168.1.102"
port = ""
name = "samples"
user = "postgres"
pass = "postgres"
type = "pgsql"
prep = "1"


O programador também pode realizar um SQL à mão livre, neste caso, também deve ter cuidados:
www.adianti.com.br/framework_files/tutor/index.php?class=ManualPrepa

3. Evitar ataques DDOS como módulo evasive


Outro tipo de ameaça à aplicação são ataques por negação de serviço - DDOS (pt.wikipedia.org/wiki/Ataque_de_negação_de_servi&ccedi), que basicamente são tentativas de tornar um sistema ou recurso indisponível por meio de sobrecarga. O Apache possui um módulo bastante interessante chamado Evasive, que trata justamente de negar conteúdo para requisições muito frequentes.

apt-get install libapache2-mod-evasive
a2enmod evasive
service apache2 restart


Bom, agora você pode refinar configurando as regras de bloqueio. Basicamente você precisará editar o arquivo a seguir.
/etc/apache2/mods-available/evasive.conf
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 3
DOSBlockingPeriod 3600
DOSLogDir /var/log/apache2/mod_evasive.log
</ifmodule>


Aqui tem uma explicação sobre as variáveis disponíveis para configuração :
www.linode.com/docs/websites/apache-tips-and-tricks/modevasive-on-ap

4. Usar o Template para gerenciar permissões


Ao utilizar o Adianti Framework você pode implementar um controle de permissões próprio, ou utilizar o Template (www.adianti.com.br/framework-template). O Template já adota uma série de boas práticas em termos de controle de acesso e utilizá-lo é altamente recomendado. Além disso, ele será sempre mantido atualizado pois é distribuído juntamente com o framework pela equipe Adianti.

5. Escondendo os parametros da requisição do usuário


Normalmente as ações via GET disparadas pelos usuários são exibidas na URL do sistema.
Ex: localhost/tutor/index.php?class=ProductForm&method=onEdit&id

Isto não é problema na maioria das vezes, visto que o Adianti Framework é utilizado na grande maioria das vezes para o desenvolvimento de sistemas. Além disso, se o usuário está vendo determinado conteúdo na URL, é por que ele possui acesso ao mesmo, caso contrário, uma mensagem de exceção é automaticamente exibida pelo Template para negar o acesso.

Mas se mesmo assim, você não quer que os dados de navegação sejam exibidos na URL, você pode desligar esse comportamento. O sistema continuará funcional, porém as URL's não serão registradas. Para atingir tal objetivo, basta desligar o atributo registerState no arquivo application.js.
app/lib/include/application.js
Adianti.registerState = false;


E caso queira usar URL's amigáveis, aqui vai o link:
www.adianti.com.br/forum/pt/view_1068?urls-amigaveis-no-adianti-fram


Comentários

Ricardo Câmara: ( 2016-03-16)
Formidável este Artigo.
Parabéns Pablo.
LUCIO: ( 2017-01-25)
Ola boa tarde, como faz a configuração do envio de e-mail smtp na abra Administração/Preferências e não to conseguindo compartilhar documentos, estou conseguindo apenas enviar e receber como administrador.
Wemerson Couto Guimarães: ( 2017-11-09)
Bom dia, excelente artigo.

Sobre esse módulo EVASIVE, no artigo você escreveu: "...que trata justamente de negar conteúdo para requisições muito frequentes. " (SIC)

Essas requisições muto frequentes são relativas ao mesmo host ? Ou seja, trata requisições muito frequentes do mesmo IP ou trata independente do IP ?
 


Você precisa realizar login para enviar posts, comentários, dentre outros. Para isso, clique em um dos botões a seguir para logar utilizando a API de um dos serviços.