Строки неизменяемы и не могут быть изменены после их создания. Создание пароля в виде строки приведет к остаточному обращению к паролю в куче или в пуле строк. Теперь, если кто-то возьмет кучу кучи Java-процесса и тщательно проверит его, он сможет угадать пароли. Конечно, эти неиспользуемые строки будут собирать мусор, но это зависит от того, когда GC запускается.
С другой стороны char [] изменяются, как только выполняется аутентификация, вы можете перезаписать их любым символом как все М или обратные косые черты. Теперь даже если кто-то берет кучу кучи, он, возможно, не сможет получить пароли, которые в настоящее время не используются. Это дает вам больше контроля в том смысле, как очистка содержимого объекта самостоятельно или до ожидания выполнения GC.
удалить upv1.RecordID
из group by
пункта
SELECT
upv1.PropertyVal as [Branch],
STUFF((select '; ' + cast(upv2.propertyval as varchar(36))
from upa.UserProfileValue upv2
where upv1.RecordID = upv2.RecordID
and upv2.PropertyID = 9
FOR XML PATH('')), 1, 2, '') [Emails]
FROM upa.UserProfileValue upv1
where upv1.PropertyID = 11
and upv1.PropertyVal <> 'Missing Branch'
group by upv1.PropertyVal
order by upv1.PropertyVal