İçeriğe geç

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.

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) });
});

Çağrılabilir metotları açık bir izin listesi (dispatch tablosu) ile sınırlayın; ham adı doğrudan kullanmayın.