جاوااسکریپت - چگونه مشکلات احتمالی حملات زمانی tsr-detect-possible-timing-attacks را رفع کنیم
من کدی مثل این دارم:
if (!confirmPassword) {
errors.confirmPassword = DefaultValidateErrors.confirmPassword;
} else if (password && password !== confirmPassword) {
errors.confirmPassword = DefaultValidateErrors.confirmPasswordMatch;
}
tslint این مورد را به عنوان tsr-detect-possible-timing-attacks مشخص کرده است که به نظر درست میآید اما چگونه میتوانم آن را اصلاح کنم.
پاسخ شماره ۱
اگر شما از Node و نسخه v6.6.0+ استفاده میکنید، میتوانید از timingSafeEqual در ماژول crypto استفاده کنید.
const crypto = require('crypto');
const isValid = crypto.timingSafeEqual(Buffer.from(password), Buffer.from(confirmPassword));
مستندات کریپتو نود
پاسخ شماره ۲
فکر میکنم این یک مثبت کاذب است و شما میتوانید هشدار lint را نادیده بگیرید. قانون lint به دنبال هر متغیری با نام password است، اما یک حمله زمانبندی تنها وقتی مرتبط است که دادهای که برای مشتری ناشناخته است درگیر باشد، به عنوان مثال زمانی که بررسی یک رمز عبور مشخص شده توسط مشتری که در حال تلاش برای ورود است، در مقابل رمز عبور صحیح ذخیره شده انجام شود. به نظر میرسد این کد فقط در حال اعتبارسنجی یک رمز عبور جدید است که توسط یک کاربر معتبر تنظیم میشود.
با این حال، برای جلوگیری از حملات زمانی هنگامی که مرتبط هستند، یک جستجوی وب مرا به مستندات قوانین رساند، که به یک پست با راهحل پیشنهادی برای مقایسه دو رمز عبور در زمان ثابت با استفاده از عملیات بیت به بیت لینک میدهد. (شما فکر میکنید که این عملکرد در جایی در یک کتابخانه وجود دارد. شاید هم وجود داشته باشد.)
