Сохранение удостоверений пользователя в Приложении Windows

Одна причина вставить каскадное удаление (вместо того, чтобы делать его в коде) состоит в том, чтобы улучшить производительность.

Случай 1: С каскадным удалением

 DELETE FROM table WHERE SomeDate < 7 years ago;

Случай 2: Без каскадного удаления

 FOR EACH R IN (SELECT FROM table WHERE SomeDate < 7 years ago) LOOP
   DELETE FROM ChildTable WHERE tableId = R.tableId;
   DELETE FROM table WHERE tableId = R.tableid;
   /* More child tables here */
 NEXT

, Во-вторых, когда Вы добавляете в дополнительной дочерней таблице с каскадным удалением, код в случае, если 1 продолжает работать.

я только вставил бы каскад, где семантика отношений является "частью". Иначе некоторый идиот удалит половину Вашей базы данных, когда Вы сделаете:

DELETE FROM CURRENCY WHERE CurrencyCode = 'USD'
8
задан Richard Szalay 7 August 2009 в 07:13
поделиться

3 ответа

Похоже, что использование ProtectedData (которое является оболочкой Windows Data Protection API ) является моим лучшим bet, так как он имеет возможность шифрования на основе текущего пользователя, вошедшего в систему.

byte[] dataToEncrypt = new byte[] { ... };

// entropy will be combined with current user credentials
byte[] additionalEntropy = new byte { 0x1, 0x2, 0x3, 0x4 };

byte[] encryptedData = ProtectedData.Protect(
    dataToEncrypt, additionalEntropy, DataProtectionScope.CurrentUser);

byte[] decryptedData = ProtectedData.Unprotect(
    encryptedData, additionalEntropy, DataProtectionScope.CurrentUser);
14
ответ дан 5 December 2019 в 12:11
поделиться

Лучшая практика - никогда не хранить учетные данные, только токены Kerberos ... к сожалению, не все ресурсы позволяют такую ​​аутентификацию.

0
ответ дан 5 December 2019 в 12:11
поделиться

В MSDN есть множество рекомендаций относительно паролей. Вам нужно будет найти управляемую оболочку для CryptProtectData

0
ответ дан 5 December 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: