mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-15 12:13:59 +00:00
fix(security): require localhost for Claude extension /setup when dashboard auth is disabled (#1270)
* fix(security): restrict Claude extension setup endpoint * style: apply prettier formatting
This commit is contained in:
1 parent
ece43fc30e
commit
db175b6807
2 files changed
+52
-4
No files matched your search
@@ -26,9 +26,12 @@ import {
|
||||
type ClaudeExtensionActionTarget,
|
||||
verifyClaudeExtensionBinding,
|
||||
} from '../services/claude-extension-settings-service';
|
||||
import { requireLocalAccessWhenAuthDisabled } from '../middleware/auth-middleware';
|
||||
|
||||
const router = Router();
|
||||
const VALID_HOSTS = new Set(CLAUDE_EXTENSION_HOSTS.map((host) => host.id));
|
||||
const SETUP_LOCAL_ACCESS_ERROR =
|
||||
'Claude extension setup requires localhost access when dashboard auth is disabled.';
|
||||
const VALID_TARGETS = new Set<ClaudeExtensionActionTarget>(['shared', 'ide', 'all']);
|
||||
|
||||
function getHostFromRequest(req: Request): ClaudeExtensionHost {
|
||||
@@ -79,6 +82,10 @@ router.get('/profiles', (_req: Request, res: Response): void => {
|
||||
});
|
||||
|
||||
router.get('/setup', async (req: Request, res: Response): Promise<void> => {
|
||||
if (!requireLocalAccessWhenAuthDisabled(req, res, SETUP_LOCAL_ACCESS_ERROR)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const rawProfile = typeof req.query.profile === 'string' ? req.query.profile.trim() : '';
|
||||
if (!rawProfile) {
|
||||
res.status(400).json({ error: 'Missing required query parameter: profile' });
|
||||
|
||||
Reference in new issue
Block a user