generated from 47ng/typescript-library-starter
-
-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
Given this schema:
model EncryptionTest {
id String @id
data String? /// @encrypted?mode=strict
}
and this test:
await prisma.$queryRawUnsafe(
`INSERT INTO encryption_test (id, data) VALUES ('id', 'plaintextdata')`,
);
const encryptionTest = await prisma.encryptionTest.findFirst({
where: { id: 'id' },
});
I would expect this test case to throw an exception. Is my understanding incorrect?
It's a simple fix if indeed it's unexpected behaviour. https://github.com/47ng/prisma-field-encryption/blob/next/src/encryption.ts#L179 is currently
if (!cloakedStringRegex.test(cipherText)) {
return
}
so if a field is in the database as plaintext (which doesn't match the cloakedStringRegex) then strict mode is not taken into account. Proposed fix:
if (!cloakedStringRegex.test(cipherText)) {
if (fieldConfig.strictDecryption) {
throw new Error('Value is not encrypted and mode=strict')
}
return
}
Metadata
Metadata
Assignees
Labels
No labels