امنیت در وب سایت های (node.js (Injections

امنیت در وب سایت های (node.js (Injections

چند نوع از injection ها رو در این قسمت مقاله بررسی می کنیم :هرگز هرگز هرگز ورودی های یوزر رو به عنوان یک پارامتر از eval , setTimeout , setInterval عبور ندید!!!تابع eval یک استرینگ رو می گیره و اون رو اجرا می کنهتوابع setTImeout, setInterval یک فانکشن به عنوان کالبک میگیرند و اون رو اجرا می کنندیک مثال ساده ://…
const username = ‘process.exit()’;
eval(username);
//…وقتی که شما کد رو اجرا کنید پراسس نود جی اس بسته میشه.مانند مثال بالا اگر ورودی یوزر رو به عنوان پارامتر از توابع eval , setTimeout , setInterval عبور بدیم هکر می تونه فایل های داخل سرور رو ببینه ، اون ها رو بخونه و اون ها رو تغییر بده یا حذف کنه‌!یک مثال برای این نوع از حملات ://…
router.post(‘/get-username’, (req, res) => {
res.send(eval(req.body.username));
}اگر یوزر به این روتر در خواست بزنه و username این عبارت بذاره :request-body :
{
username : &quotrequire(‘fs’).readdirSync(‘.’).toString()&quot
}می تونه تمام فایل های داخل مسیر فعلی کد ببینه.چطور باید از این حملات جلوگیری کنیم‌‌؟۱. ورودی های یوزر رو validate کنید ( می تونید از پکیج هایی مثل joi , fastest-validator‌‌ استفاده کنید )۲. ورودی های یوزر رو از توابعی که بالا گفته شد به عنوان پارامتر عبور ندیدهکر می تونه با استفاده از این ترفند به اطلاعاتی که نباید دسترسی پیدا کنه ، دسترسی پیدا کنه یا تغییر در اون ها اعمال کنه!به طور مثال حمله کننده می خواد با استفاده از نام کاربری یکی دیگه وارد بشه ولی رمزش رو نداره.//…
router.post(‘/login’, (req, res) => {
User.findOne({
username : req.body.username,
password : req.body.password
}).then(user => res.send(user);
}هکر از این ترفند استفاده می کنه تا به حساب کاربری دسترسی پیدا کنه :request-body : {
username : &quotalireza&quot,
password : { $gt : &quot&quot }
}مانگو دی بی اطلاعات یوزری رو می فرسته که :username اون alireza باشه و password اون بزرگتر از “” باشه (یعنی هر پسوردی)چطور باید از این حملات جلوگیری کنیم‌‌؟1. ورودی های یوزر رو sanitize کنید ( می تونید از پکیج های mongo-sanitize , express-mongo-sanitize استفاده کنید)۲. از $eq استفاده کنید۳. یک ورودی رو به عنوان کوئری پیدا کنید و بقیه اطلاعاتی که باید چک کنید رو از طریق if چک کنیدتوی سری های بعدی امنیت در وب سایت های node.js به سایر مباحث امنیتی هم می پردازیم‌:)

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *