No CakePHP, há várias práticas e configurações de segurança que você pode implementar para proteger melhor seu sistema contra ataques. Abaixo estão as principais áreas que você deve focar ao configurar a segurança:
config/app.php
Security.salt
):
Security.salt
é forte e única. Nunca utilize o valor padrão fornecido pelo CakePHP.bin/cake security generate_salt
config/app.php
, habilite o SSL:
'Security' => [
'salt' => 'SEU_SALT_SEGURO',
'ssl' => true
],
'csrfProtection' => [
'enable' => true,
],
h()
para escapar strings que são exibidas diretamente nas views.echo h($user->username);
$query = $articles->find()
->where(['id' => $id]); // ORM protege automaticamente contra SQL injection
'Cors' => [
'allowOrigin' => ['https://seudominio.com'],
'allowMethods' => ['GET', 'POST'],
],
$service = new AuthenticationService();
$service->loadIdentifier('Authentication.Password');
$service->loadAuthenticator('Authentication.Session');
.php
, .exe
, etc.'Session' => [
'defaults' => 'php',
'ini' => [
'session.cookie_secure' => true, // Cookies apenas via HTTPS
'session.cookie_httponly' => true, // Não acessível via JavaScript
'session.use_strict_mode' => true, // Previne roubo de sessão
],
],
'Session' => [
'timeout' => 60, // Sessões expiram após 60 minutos
],
/tmp
, /logs
, e /vendor
. Certifique-se de que diretórios onde uploads são armazenados não permitam execução de scripts PHP.
chmod 755 /caminho/para/uploads
app.php
Seguro:return [
'Security' => [
'salt' => env('SECURITY_SALT', 'uma-chave-unica-e-forte'),
'ssl' => true, // Força o uso de HTTPS
],
'Session' => [
'defaults' => 'php',
'timeout' => 60, // Sessões expiram após 60 minutos
'ini' => [
'session.cookie_secure' => true, // Cookies apenas via HTTPS
'session.cookie_httponly' => true, // Cookies apenas acessíveis via HTTP
],
],
'csrfProtection' => [
'enable' => true, // Proteção CSRF
],
// Autenticação e autorização
'Authentication' => [
'loadIdentifier' => 'Authentication.Password',
'loadAuthenticator' => 'Authentication.Session',
],
'Cors' => [
'allowOrigin' => ['https://seudominio.com'], // Controle de acesso CORS
'allowMethods' => ['GET', 'POST'],
],
];
Se precisar de ajuda para configurar algum desses itens ou fazer uma auditoria de segurança no CakePHP, estou à disposição!