Segurança no Framework CakePHP

 

Uma forma de melhorar a segurança no Cake é usando o componente Security.

Quando usando o componente Security precisamos usar o FormHelper para criar nossos formulários.

Precisamos checar todos os dados entrados pelos usuários.

Outros recursos importantes: validação de dados do banco, componentes Auth, ACL, hashes de senha, criptografia, etc.


Exemplo:

http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html

Outros recursos oferecidos pelo Cake: prevenção SQL injection, XSS, CSRF, tratamento dos inputs, etc.

 

Mais um: mover o core do CakePHP para fora do diretório web.

 

Plugin que reforça a segurança do Cake:
https://github.com/nodesagency/cakephp-security

Também o uso de validação e de sanitização ajuda.

Detalhes

http://book.cakephp.org/3.0/en/core-libraries/security.html

 

A Validação dos dados dos formulários é importante.

Um deles é validar campos importantes e para o tipo adequado.

Quando criamos o aplicativo usando o bake para gerar o CRUD, ele já gera uma validação apenas básica.

 

Criando validação manualmente

class Clientes extends AppModel{
public $validate = array(
'nome' => 'notEmpty',
'email' => array('notEmpty','email'),
'rua' => 'notEmpty'
);
}

 

Com RegExp

public $validate = array(
’login’ => array(
’rule’ => ’/^[a-z0-9]{3,}$/i’,
’message’ => ’Only letters and integers, min 3 characters’
)
);


Backup

 

Efetue um backup ful (de todo o diretório do aplicativo e todo o banco).

Em caso de algum problema poderá colocar o aplicativo de volta rapidamente.

A frequência do backup pode ser diária, semanal, mensal. Vai depender das alterações do aplicativo ou dados do banco e também da importância do aplicativo.

Você tanto pode efetuar o backup manualmente quanto pode automatizar com a ajuda do crontab do servidor ou usar outro método/ferramenta.

 

Security Salt

O Cake define um valor padrão para as suas sessões e o define em Security.salt.

Esse valor não é alterado, ou seja, todos que fazem download do Cake no site oficial tem Security.salt com o mesmo valor. Então junto com a configuração do arquivo do banco de dados devemos alterar também o valor de Security.salt para preservar a segurança das nossas sessões.


Qual o valor a ser usado?

Qualquer valor que você queira. Geralmente algo exclusivo para o seu site. Uma sequência aleatória de números/texto é geralmente recomendado.

É utilizado como uma "semente" para os vários do hashing usados no Cake funcionar.

No arquivo app/Config/core.php,

Linha 197 (versão 2.3.6), terá:

Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUu1029jdjdiR2G0FgaC9mi');

O Security Salt serve para a geração de Hashes, sempre que precisar gerar um, o cake vai pegar o valor dessa string Pode usar qualquer string, contanto que não seja facilmente adivinhada Isso eh utilizado por exemplo, na criação do hash da senhas de usuários do site.

Detales

http://book.cakephp.org/3.0/en/core-libraries/security.html

 

Atualizando o Cake entre versões Menores

Sempre que sair uma nova versão é importante atualizar o core do Cake do seu aplicativo. Especialmente se a nova versão trouxer correções de falhas de segurança e seu aplicativo tiver acesso via internet.

Seguindo este roteiro eu atualizei um aplicativo da versão 2.3.6 par a nova versão 2.3.7 sem problemas
- Efetuar backup full, de todo o diretório da aplicação e de todo o banco
- Descompactar a nova versão
- Acessar o diretório lib/Cake da nova versão e copiar o lib/Cake para o mesmo diretório do aplicativo existente.

Aqui eu antes removi todo o conteúdo de lib/Cake no diretório existente.

- Copiar o cakephp-2.3.7/index.php para o raiz do aplicativo, sobrescrevendo o existente (pode ser que não tenha sido alterado, mas por vias das dúvidas...)
- Limpe o cache do aplicativo app/tmp/cache/persistente (e models)
- Mantenha sem alterações o diretório "app" do seu aplicativo

Agora pode testar o aplicativo com o novo core.
 

Saber versão atual do core do CakePHP:

- Abra o arquivo
aplicativo/lib/Cake/VERSION.txt

Hoje (07/07/2013) saiu a versão 2.3.7 do Cake e a beta 2.4.

Outro assunto é a Migração, no caso entre versões maiores.