Segurança
Usuário de execução
É recomendável definir o usuário de execução como um usuário com permissões mais baixas, por exemplo, o mesmo que o usuário que executa o nginx. O usuário de execução pode ser configurado em config/server.php
nas chaves user
e group
. O usuário para processos personalizados semelhantes pode ser especificado nas chaves user
e group
em config/process.php
. É importante notar que o processo monitor não deve ter o usuário de execução definido, pois ele necessita de permissões elevadas para funcionar corretamente.
Normas para Controladores
Apenas arquivos de controlador devem ser colocados no diretório controller
ou em subdiretórios; outros arquivos de classe são proibidos. Caso contrário, se a extensão de controlador não estiver ativada, arquivos de classe podem ser acessados ilegalmente pela URL, resultando em consequências imprevisíveis. Por exemplo, app/controller/model/User.php
é na verdade uma classe Model, mas foi incorretamente colocada no diretório controller
, o que permitirá que usuários acessem quaisquer métodos dentro de User.php
através de URLs como /model/user/xxx
, caso a extensão de controlador não esteja ativada. Para evitar essa situação, é fortemente recomendável usar a extensão de controlador para identificar claramente quais arquivos são controladores.
Filtragem XSS
Considerando a versatilidade, o webman não realiza a escape de XSS nas requisições. O webman recomenda fortemente realizar a escape de XSS durante a renderização, em vez de antes de armazenar no banco de dados. Além disso, templates como twig, blade e think-template executam automaticamente a escape de XSS, evitando a necessidade de escapar manualmente, o que é muito conveniente.
Dica
Se você realizar a escape de XSS antes de armazenar no banco de dados, isso pode causar problemas de compatibilidade com alguns plugins de aplicação.
Prevenção de Injeção SQL
Para evitar injeção SQL, utilize sempre que possível um ORM, como illuminate/database ou think-orm, e evite montar SQL manualmente.
Proxy nginx
Quando sua aplicação precisa ser exposta a usuários externos, é altamente recomendável configurar um proxy nginx na frente do webman, pois isso pode filtrar algumas requisições HTTP ilegais e melhorar a segurança. Para mais detalhes, consulte proxy nginx.