fix(backend): use atomic command to improve security
Co-Authored-By: Acid Chicken <root@acid-chicken.com>
This commit is contained in:
		| @@ -246,14 +246,12 @@ export class WebAuthnService { | |||||||
|  |  | ||||||
| 	@bindThis | 	@bindThis | ||||||
| 	public async verifyAuthentication(userId: MiUser['id'], response: AuthenticationResponseJSON): Promise<boolean> { | 	public async verifyAuthentication(userId: MiUser['id'], response: AuthenticationResponseJSON): Promise<boolean> { | ||||||
| 		const challenge = await this.redisClient.get(`webauthn:challenge:${userId}`); | 		const challenge = await this.redisClient.getdel(`webauthn:challenge:${userId}`); | ||||||
|  |  | ||||||
| 		if (!challenge) { | 		if (!challenge) { | ||||||
| 			throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', 'challenge not found'); | 			throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', 'challenge not found'); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		await this.redisClient.del(`webauthn:challenge:${userId}`); |  | ||||||
|  |  | ||||||
| 		const key = await this.userSecurityKeysRepository.findOneBy({ | 		const key = await this.userSecurityKeysRepository.findOneBy({ | ||||||
| 			id: response.id, | 			id: response.id, | ||||||
| 			userId: userId, | 			userId: userId, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo