Asp. net и compatibilityMode, почему работает compatibilityMode = "Framework20SP2"? - PullRequest
1 голос
/ 14 июля 2020

У меня устаревшее приложение asp. net, которое я обновил до шифрования 3DES. Моя машина разработчика, конечно, работала нормально, QA работала нормально (работала нормально, без ошибок в шифровании и дешифровании). Однако, когда я развернул его на стадии постановки, я не смог заставить его работать. Приложение начало выдавать ошибки расшифровки. После долгих поисков в Google я обнаружил, что мне нужно добавить CompatibleMode = "Framework20SP2" в мой web.config.

Может кто-нибудь помочь мне понять, что это? Почему мое приложение работало бы в других средах? Я знаю, что это работает, но почему я не могу понять?

1 Ответ

5 голосов
/ 14 июля 2020

Исходя из compatibilityMode, я предполагаю, что вы на самом деле говорите об элементе machinekey.

Я бы также предположил, потому что вы не включили подробности исключения, которые вы может отображаться что-то вроде

. При использовании API MachineKey.Protect и MachineKey.Unprotect атрибут 'validation' должен иметь одно из следующих значений: SHA1, HMACSHA256, HMACSHA384, HMACSHA512 или alg: [KeyedHashAlgorithm].

Честно говоря, вы должны не использовать 3DES. Это ни в коем случае не обновление. 3DES - это взломанная криптовалюта. Ошибки, которые вы получаете, вероятно, пытаются удержать вас от использования сломанной криптографии, потому что команда. NET хочет, чтобы вы были в безопасности. Использование такой старой криптографии, особенно с веб-формами, может привести к удаленному выполнению кода.

Прекратить использование 3DES.

Если вы не находитесь на веб-ферме, прекратите использование элемента machinekey на all, позвольте asp. net автоматически сгенерировать для вас машинный ключ и по умолчанию использовать то, что он считает безопасным.

...