fix(config.sample): remove Host Header Injection risk in OAuth redirectUri + doc improvements#122
fix(config.sample): remove Host Header Injection risk in OAuth redirectUri + doc improvements#122
Conversation
…ncias. Simplificar o que deve ser simplificado.
remove english comments and put portuguese comments only. make the comments more clear. add a little bit of more information regarding the stuff that is in the configuration add reference to the future configuration that will be created in the docs file.
|
📝 Manual Update Required? It looks like you've modified core logic. Please check if the user manual needs a refresh! @marpisco |
There was a problem hiding this comment.
Pull request overview
Atualiza documentação e o ficheiro de configuração de exemplo do ClassLink (plataforma de reserva de salas/materiais), alinhando textos e reorganizando secções para refletir mudanças feitas em 08/04/2026.
Changes:
- Reorganização e tradução/ajuste de comentários no
src/config.sample.php(DB/email/OAuth). - Atualização do
README.mdpara listar dependências (incluindo versão de PHP) e simplificar instruções.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| src/config.sample.php | Ajustes de documentação/configuração de exemplo para DB/email/OAuth (comentários e estrutura). |
| README.md | Atualiza a secção inicial para “Dependências” e altera requisitos/instruções de instalação. |
src/config.sample.php
Outdated
| /// caso a autenticação seja por starttls, usar PHPMailer::ENCRYPTION_STARTTLS | ||
| /// caso a autenticação seja por ssl, usar PHPMailer::ENCRYPTION_SMTPS | ||
| /// caso não seja necessário autenticação, por false na opção autenticacao, e não importar-se para os outros |
There was a problem hiding this comment.
Os comentários usam /// nas linhas seguintes, enquanto o resto do ficheiro usa // e /* */. Em PHP /// não tem semântica especial (não é docblock) e pode confundir; sugiro normalizar para // ou um bloco /* ... */.
| /// caso a autenticação seja por starttls, usar PHPMailer::ENCRYPTION_STARTTLS | |
| /// caso a autenticação seja por ssl, usar PHPMailer::ENCRYPTION_SMTPS | |
| /// caso não seja necessário autenticação, por false na opção autenticacao, e não importar-se para os outros | |
| // caso a autenticação seja por starttls, usar PHPMailer::ENCRYPTION_STARTTLS | |
| // caso a autenticação seja por ssl, usar PHPMailer::ENCRYPTION_SMTPS | |
| // caso não seja necessário autenticação, por false na opção autenticacao, e não importar-se para os outros |
README.md
Outdated
| - PHP 8.4 | ||
| - Servidor Web (recomendo o Caddy) | ||
| - MariaDB ou MySQL (oficialmente recomendo o MariaDB) | ||
| - Composer (para o Windows, descarregar [esta versão](https://getcomposer.org/Composer-Setup.exe)) |
There was a problem hiding this comment.
O README fixa a dependência em PHP 8.4, mas o composer.json não declara um requisito de versão de PHP. Para evitar confusão/instalações falhadas, sugiro alinhar: ou documentar como "testado/recomendado" (indicando também o mínimo suportado) ou adicionar o constraint de PHP no composer.json.
| - PHP 8.4 | |
| - Servidor Web (recomendo o Caddy) | |
| - MariaDB ou MySQL (oficialmente recomendo o MariaDB) | |
| - Composer (para o Windows, descarregar [esta versão](https://getcomposer.org/Composer-Setup.exe)) | |
| - PHP 8.4 (versão recomendada/testada) | |
| - Servidor Web (recomendo o Caddy) | |
| - MariaDB ou MySQL (oficialmente recomendo o MariaDB) | |
| - Composer (para o Windows, descarregar [esta versão](https://getcomposer.org/Composer-Setup.exe)) | |
| - Usar uma versão de PHP compatível com as dependências resolvidas pelo Composer. |
| ## Dependências | ||
|
|
||
| - Necessário um servidor com PHP e uma DB MariaDB | ||
| - PHP 8.4 | ||
| - Servidor Web (recomendo o Caddy) | ||
| - MariaDB ou MySQL (oficialmente recomendo o MariaDB) | ||
| - Composer (para o Windows, descarregar [esta versão](https://getcomposer.org/Composer-Setup.exe)) | ||
| - Com o composer, fazer `composer install` através de um terminal, para instalar as dependências. | ||
| - Montar o utilizador usando as instruções [na wiki](https://github.com/marpisco/ClassLink/wiki/Configura%C3%A7%C3%A3o-MYSQL) (brevemente haverá mais documentação na Wiki) | ||
|
|
||
| Informações específicas (e mais bem explicadas) estarão no Manual do Técnico. |
There was a problem hiding this comment.
Ao renomear a secção de instalação para "Dependências" foi removido o passo que apontava para as instruções de criação/configuração do utilizador MySQL/MariaDB. Se essa configuração continua necessária (criação do user/permissões), o README fica incompleto para uma instalação nova; sugiro reintroduzir um link/passo equivalente (Wiki/Manual do Técnico) nesta secção.
…stão Copilot) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
📝 Manual Update Required? It looks like you've modified core logic. Please check if the user manual needs a refresh! @marpisco |
…stão Copilot) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
📝 Manual Update Required? It looks like you've modified core logic. Please check if the user manual needs a refresh! @marpisco |
| 'servidor' => 'localhost', | ||
| 'user' => 'reservasalas', | ||
| // Defina uma password forte antes de usar em produção e restrinja as permissões deste utilizador da DB ao mínimo necessário. | ||
| 'password' => '', | ||
| 'db' => 'reservasalas', |
There was a problem hiding this comment.
O config.sample.php ainda inclui uma password de base de dados hardcoded ('salaspass'). Mesmo sendo um ficheiro de exemplo, isto aumenta o risco de alguém usar credenciais fracas/iguais em produção e também expõe um valor que pode acabar reutilizado. Sugestão: deixar o valor vazio (ou placeholder) e reforçar no comentário que deve ser definido externamente e com permissões mínimas.
src/config.sample.php
Outdated
| 'urlResourceOwnerDetails' => 'https://authentik.devenv.marcopisco.com/application/o/userinfo/', | ||
| 'clientId' => 'clientid', // CHANGE THIS | ||
| 'clientSecret' => 'clientsecret', // CHANGE THIS and keep it secret | ||
| 'clientId' => 'clientid', | ||
| 'clientSecret' => 'clientsecret', | ||
| 'redirectUri' => 'https://' . $_SERVER['HTTP_HOST'] . '/login' |
There was a problem hiding this comment.
redirectUri é construído diretamente a partir de $_SERVER['HTTP_HOST'], o que pode abrir espaço a Host Header Injection (e redirecionamentos OAuth inesperados) se o Host não for validado. Sugestão: usar uma base URL fixa no config (ex.: variável de ambiente) ou reutilizar um helper que valide o host (ex.: getBaseUrl() já faz validação em func/email_helper.php).
|
@copilot apply changes based on the comments in this thread |
…th e melhorar README Agent-Logs-Url: https://github.com/marpisco/ClassLink/sessions/136a1ba0-355d-45b4-b974-2baa56a53dc5 Co-authored-by: marpisco <162377105+marpisco@users.noreply.github.com>
Feito no commit db31569. As alterações aplicadas:
|
|
📝 Manual Update Required? It looks like you've modified core logic. Please check if the user manual needs a refresh! @marpisco |
redirectUriwas built from$_SERVER['HTTP_HOST']without validation, enabling Host Header Injection in the OAuth flow. Reviewer comments also flagged hardcoded placeholder credentials and missing security guidance.Changes
src/config.sample.phpredirectUriwith a static placeholder; add explicit comment warning against using$_SERVER['HTTP_HOST']directlyclientId/clientSecretvalues (were'clientid'/'clientsecret') and replace example provider URLs with genericexemplo.dominio.ptplaceholderclientSecretconfidentialREADME.md