Я читал этот вопрос о хранении паролей с помощью char[] в Java и понял, что есть языки, в которых нет массивов символов. И Dart, и Python используют списки объектов вместо массивов ( Документация по Dart и Учебное пособие по Python). Насколько я понимаю, это будет означать, что вы не можете перезаписать память и, таким образом, оставит приложение открытым для атаки дампа памяти.
Есть ли способ перезаписать память и, таким образом, избежать этой возможности атаки в Dart или Python?
@itprorh66 itprorh66 Я отредактировал его, чтобы было более ясно, что я спрашиваю, есть ли способ перезаписать память, а не о том, следует ли мне беспокоиться об этом (поэтому вопрос «как это сделать», который должен отвечать с объективной точки зрения).






Re: Питон:
Объекты strings и bytes неизменяемы в Python, поэтому да, изменение их содержимого создаст новый объект, в то время как старый останется в памяти на некоторое время, прежде чем в конечном итоге будет удален сборщиком мусора и рано или поздно перезаписан вновь созданными объектами.
OTOH вы можете использовать bytearrays, которые изменяемы - очевидным недостатком является то, что вы будете ограничены 8-битными символами.
Примечание: списки также изменяемы, но список строк из одного символа будет иметь (смягченную версию) ту же проблему: не останется «старого» списка, но различные элементы останутся до тех пор, пока не будет собран мусор.
Даже массивы байтов могут (по крайней мере, в Dart, не знаю Python) перемещаться сборщиком мусора, который может оставлять копии в памяти до тех пор, пока эта память не будет перераспределена. В Dart я бы использовал dart:ffi для выделения памяти вне кучи собранного мусора, чтобы убедиться, что вам нужно очистить только одно место. Это работает только на родной виртуальной машине. В Интернете вы ограничены тем, что позволяет JavaScript. (С другой стороны, перезапись List<int> в Dart очистит эту копию данных, даже если целые числа выглядят как объекты. Маленькие целые числа на самом деле не являются объектами и в любом случае вездесущи.)
Открытые вопросы и вопросы, основанные на мнениях, которые сводятся к субъективным ответам, как правило, не подходят для этого сайта, поскольку обычно существует не один правильный ответ, а целый ряд мнений, основанных на разных подходах.