1

math.js某些漏洞中,如果一个人输入一个不可能的问题1:999999999999999999999,它将使过程崩溃node.js,有什么想法吗?

我用于计算的代码:

let resp;

    try {
        resp = math.evaluate(args.join(" "))
    } catch (e) {
        return message.channel.send('Please provide a **valid** question')
    }
4

2 回答 2

0

这真的很荒谬,但如果1:999999999999999999999是你唯一关心的问题,我注意到 / 不会引起任何问题,但 : 会。因此,您可以将:计算中的every 替换为/.

let resp;

try {
    resp = math.evaluate(args.join(" ").replace(/:/g, "/"))
} catch (e) {
    return message.channel.send('Please provide a **valid** question')
}
于 2022-01-19T08:19:33.503 回答
0

例如,如果您在树莓派上使用 linux,则可以使用子进程来运行计算并限制操作系统上进程的最大内存

于 2021-08-30T20:15:59.700 回答