Учитывая предоставленную пользователем строку JSON, как мы можем очистить ее перед запуском JSON.parse(untrustedString)
?
Меня в первую очередь беспокоит загрязнение прототипа, но мне также интересно, на что еще я должен обращать внимание? Если риск представляет собой просто загрязнение прототипа, то я предполагаю, что с этим можно справиться с помощью регулярных выражений, но я подозреваю, что есть дополнительные проблемы?
Например, эта статья об опасностях анализа ненадежного JSON. а затем создать копию объекта.:
Теперь рассмотрим некоторые вредоносные данные JSON, отправленные на эту конечную точку.
{ "user": { "__proto__": { "admin": true } } }
Если этот JSON отправлен,
JSON.parse
создаст объект со свойством__proto__
. Если копирующая библиотека работает так, как описано выше, она скопирует свойство admin в прототипreq.session.user
!
JSON.parse()
допустить загрязнение прототипа объекта? - person Slbox   schedule 16.09.2020__proto__
могут появиться дополнительные свойства, и вы должны остерегаться этого - ничего, что JSON.parse делает неправильно... - person Daniel A. White   schedule 16.09.2020