Dinamik metot çağrısı (ARCH3132)
Anahtar typescript.security.dynamic-method-dispatch · Önem warning · Kategori security · CWE CWE-470
Çağrılacak metot adını doğrudan kullanıcı girdisinden almak, saldırganların amaçlanmayan fonksiyonları tetiklemesine olanak tanır. İzin verilen metotları bir izin listesiyle sınırlayın.
Hatalı
Bölüm başlığı “Hatalı”const service: Record<string, Function> = new UserService() as any;
app.post("/rpc", (req, res) => { const result = service[req.body.method](req.body.args); res.json({ result });});const handlers: Record<string, (args: unknown) => unknown> = { getProfile: (a) => getProfile(a), listOrders: (a) => listOrders(a),};
app.post("/rpc", (req, res) => { const fn = handlers[req.body.method]; if (!fn) return res.sendStatus(400); res.json({ result: fn(req.body.args) });});Düzeltme
Bölüm başlığı “Düzeltme”Çağrılabilir metotları açık bir izin listesi (dispatch tablosu) ile sınırlayın; ham adı doğrudan kullanmayın.