Из вашего поясняющего комментария:
Я провожу аудит кода, и метод toString можно переписать.Поскольку входные данные поступают от клиента, он перезаписывает метод toString экземпляра строкой, отправленной клиентом.Мне было интересно, есть ли здесь какой-либо риск безопасности.
Если ваш код не делает что-то, чтобы превратить эту строку в функцию (eval(a.toString)
, new Function(a.toString)
, btn.onclick = a.toString;
, ...),оно не станет единым, так что в этом смысле это не угроза безопасности.Любая попытка вызвать toString
на a
(явно или неявно) вместо этого получит ошибку.Например, вот неявное использование toString
:
let a = new Object();
a.toString = "function(){ return 'hello world' }"
String(a); // TypeError: a.toString is not a function
Это явно нежелательно, но вы сказали, что это ошибка, и пытаетесь выяснить, в какой степени ее можно использовать.Я бы сказал, что он не особо подходит для использования.